爸爸对我学习程序的步伐不耐烦。我该怎么办?[关闭]


200

因此,大约一个月前,我父亲给我买了5本关于编程的书(C ++,Java,PHP,Javascript,Android)。他是一名架构师,对编程一无所知。他买了我,因为我告诉他编程很有趣,我想学习。

您可能知道,小时候(我14岁)并被要求从枯燥的书籍中学习编程并不是最简单的事情。我总是分心。.我之前告诉过他,我不需要买书,我可以看在线教程..但是,他太老套了。他只是让我使用这些书。

最近,他开始问我如何处理它,我向他展示了我制作的C ++程序,该程序将接受您键入的内容,然后为每个字母分配值(A是字母中的第一个字母,因此它获取值之1)..依此类推。然后,它将所有值相加并告诉您。因此,“ add”一词的值为9。

^^对他来说不是很令人印象深刻。他对我大吼,并告诉我我一直在做的事。这不是真的。他非常传统,固执,不听我说的话。我应该告诉他什么?

PS:如果您有关于分区书籍的任何技巧,请告诉我

编辑:非常感谢大家,您不知道知道有些人了解我的情况对您有多重要。我读了每个人,我会考虑每个人的意见。格拉西亚斯!


15
评论员:评论旨在寻求澄清,而不是进行扩展讨论。如果您有解决方案,请留下答案。如果您的解决方案已经发布,请对其进行投票。如果您想与其他人讨论这个问题,请使用chat。有关更多信息,请参见FAQ

7
顺便说一句,你应该给他看这个话题。如果他看到专业程序员对您的进步的看法,那么他可能会走得更远。
收藏者

15
@David这不是传统的,那是一个可怕的父母和一个自私的人。在这一点上,他不希望您真正成功,否则他会与您同在。他真的只是想成为一个成功孩子的父亲。不幸的是,您对此无能为力,因为它是您的父亲,您不能无礼。我要说的是做鬼脸并忍受它,然后当需要大学毕业时,选择一个距离很远的常春藤联盟。
李·路维耶

15
我对此并不感到惊讶,因为它已经关闭(这是题外话),但是这是我希望我们为“题外,但无论如何都要保留”的标记/标志的问题之一。:)
独眼巨人

12
询问您的父亲他14
岁时

Answers:


197

我给他看了我制作的C ++程序,该程序接受您键入的内容,然后为每个字母分配值(A是字母表中的第一个字母,因此它的值为1)。等等。然后,它将所有值相加并告诉您。因此,“ add”一词的值为9。

我不知道你该怎么办 但:

如果您是一个月内从头开始,从书本上学习的话,那么这真是令人印象深刻。您是用C ++进行的,C ++是现有的最可怕的编程语言之一。

外面有很多人接受面试,认真地尝试去做编程工作,他们会为此而苦苦挣扎。看这个故事。

我只能建议:继续做自己喜欢的事情。在这种情况下忽略你的父亲;他不知道他在说什么。您具有编程天赋,并且乐于学习-成为一名出色的程序员的主要因素。


8
是的,我一直在努力学习(该特定程序使我头痛60左右)。
大卫,

8
@David:既然他是一名建筑师,那么他关心事物的外观是可以理解的。但是,如果他对编程一无所知,那么他就不应批评它。软件的图形,外观和感觉只是冰山一角
乔纳斯·普拉卡

12
认真吗 “ Fatbooth”具有一些冗长的图形处理算法,需要多年的学习和掌握。如果您父亲希望您掌握面部识别功能,那么他应该买一本有关它的书。它看起来很简单(因为易于使用),但要实现的难度比您想像的要困难得多,这使您头痛60多个。假设像“ Fatbooth”这样的应用程序易于实现,对程序员来说是一种严重的(但秘密的)侮辱。
Spoike 2011年

121
+1,该死的令人印象深刻。特别是考虑到您来自哪里。我想你可以问问你的父亲,从零开始学手艺后的一个月,他甚至参与了多少栋建筑,少了自己的工作。把事情与他可以关联的术语放在一起。
的CVn

13
@Joonas:更不用说图形设计,可用性和界面设计实际上都是与编程几乎没有关系的所有学科。
Toby

88

向他展示Peter Norvig的这篇文章。诺维格(Norvig)是Google的研发主管,并在斯坦福大学任教,尤其是在人工智能领域,他撰写了有关AI 的标准入门书籍。您工作了多久了?我希望新手经过一个月的工作之后再没有其他指示,尤其是像C ++这样棘手的事情之后,别无所求。任何值得学习的东西都值得学习。


83
  1. 请记住,您的父亲可能认为您是世界上最聪明的孩子,而他正在努力帮助您了解您说过的东西。

  2. 要知道,即使你父亲毫无疑问是错误的(五个完全不同的话题一次让孩子陷入困境),他也是对的。许多人试图模仿他们在网络上找到的“教程”来学习程序。这并不总是一件坏事,但IMO通常不会带来扎实的了解。正确的书将首先教您基础知识。这样做可能不会像跟随那些完成一些浮华的教程那样有趣,但是获得长期成功的机会将会增加,并且您必须在stackoverflow.com上提问的数量也会减少。

  3. 至少暂时不要忘记一本书。听起来您已经开始使用C ++,因此,如果愿意,可以继续使用。

  4. 您会不时感到沮丧。有时感觉好像一半的程序被卡住了,另一半却被卡住了。摆脱粘滞是一项宝贵的技能,练习的次数越多,您的状况就会越好。(避免陷入困境也是一项宝贵的技能,所以也要练习。)

  5. 学习您的第一门计算机语言是软件开发,而学画则是设计建筑物。它可能不是最有趣的部分,但这是必需的技能。

  6. 如果可以让他听,请尝试分解编写小程序所必须学习的所有内容。仅仅花一点时间来学习使用这些工具,他肯定不了解其全部工作原理。

  7. 既然您已经拥有了一个简单的运行程序,并且显然已经学习了一点C ++,那么您可以编写哪些有趣的小程序?接受利率,贷款金额和贷款期限并打印出付款时间表的贷款计算器怎么样?还是可以读取分子​​式(如“ H2SO4”或“ C6H12O6”)并打印出分子重量的计算器?这并没有比您已经编写的程序复杂得多。


47
+1“忘记其中的一本书”
PA。

9
+1代表实用的构想。学习时,最困难的部分通常是在您被新信息所困扰的同时,为项目提出一个构想。
Morgan Herlocker 2011年

5
+1“记住您的父亲……”即使他以自己的激动之心扼杀了David的热情,也很高兴将父亲的观点纳入其中。
约翰·麦金太尔

7
让您的父亲参与进来,制作一个小的体系结构问题解决/计算工具!
Vaibhav Garg,

3
+1为第一点。我认为对于父母来说,将孩子视为世界上最聪明的孩子非常重要。最后,我敢肯定,如果不采取这种态度,OP将不会在一个月内做得那么多。但是,如果这给OP带来了很多麻烦,则可能会产生开销。
安东·斯特罗贡诺夫

53

他买了我,因为我告诉他编程很有趣,我想学习。...我该告诉他什么?

“爸爸,您这样做的方法绝对使学习编程变得毫无乐趣


4
不是最好的建议。爸爸不喜欢这样回答
塞浦路斯

1
是的,但是如果OP只是坐在那里接住,那么父亲会觉得他是对的;毕竟他的孩子不是很努力。这个孩子一定要大声说出来,这样他的父亲就会意识到他的工作很努力。
凯文

1
@CyprUS是的,但是我现在很怕机器人这个词。一年前那是我一生的挚爱。我安装了Lego Mindstorms Kit,安装了RobotC等等。很喜欢它,直到我父亲有了一些“真实”的齿轮和马达,并告诉我做些“真实”的东西,例如机械臂。现在热爱机器人。
chandsie 2011年

48

作为一名建筑师,他必须确定要拉你的腿或无礼。

探究他开始的时间:问他是否在花费了一个月的时间后是否用详细的水暖计划绘制了摩天大楼,计算了材料上的力和应力以及是否进行了灾难风险评估(例如被飞机上的蛇击中)。他和你一样年轻的时候就读书。也许会让他平静下来。

好吧,也许这不是我能给您的最好的建议,回覆您的父母。我可以理解,有个父亲会惩罚进步而不是鼓励孩子,虽然小时候有点累,但是却把它当作鼓励孩子做得更好的鼓励。他可能有态度问题,但这并不意味着恶意。


44
也是对您父亲的忠告(尽管不在问题范围内):放弃戈登·拉姆齐的态度。它仅适用于地狱厨房,因为竞争者是经验丰富的成年人,他们被期望知道如何在他的餐厅里做饭和做得完美,而戈登在到期时也给予了荣誉。如果您对初学者或孩子这样做,只会吓them他们远离练习。值得一提的是,拉姆齐(Ramsay)在他的其他电视连续剧中表现更好,因为这并不是他本人的生意。
Spoike

30

我很好奇您正在使用哪些书。并非所有的人实际上都是好人。此外,并非每本书都适合所有人。

您没有指定年龄,所以我假设您的年龄在18岁以下。我从8岁开始学习。

小时候,我在学习编程时会利用很多资源。我有TI 99 / 4A随附的手册,其中包含许多有趣的程序来绘制图像和动画人物。我无法使用互联网,但是甚至有针对儿童的计算机杂志,其中有我可以键入并可以立即获得反馈的程序,以及有关如何解决其他类型挑战的文章。我非常喜欢一个间谍小说系列,可以输入和调试作为故事一部分的程序。不幸的是,我不认为这种资源仍然存在,但是有一些针对年轻人的编程书籍,例如关于Python的Hello World书籍和Lisp的土地(尽管这对成年人也很有趣)。

我不了解您,但是有一段时间我开始编写与您刚才描述的功能非常相似的程序。最终,我转向了更高级的东西。我写了一些平庸的游戏,一些演示播放了各种声音和动画以响应击键,还有一些学习工具。当我10或11岁左右时,我编写了一个程序,通过反复询问我来帮助我记住元素周期表。(当时,我的记忆能力比现在更好,因此我第一次玩测验时几乎没有输入数据的次数,但是重点是要有所进步)。

您的父亲可能没有意识到这一点,但是在您学习编程时,书籍只是过程的一部分。找到一个小问题并试图弄清楚如何解决它是方程式的另一半。找一本可以一次教您一点点的书,让您从机器上学到一些有趣的东西是另一半。以我为例,那些强调图形和动画的书才是让我胜过的书。

小时候,当我阅读有关排序算法和复杂数据结构的书籍时,我的眼睛就呆呆了,直到我学到足够的知识来了解它们如何应用于我真正关心的问题。并非您将阅读的书中的每个单词都会吸引人。没关系。您将在需要时使用这些东西。您将要解决的一些问题将使您想起三周,三个月或三年前您认为并不有趣的技术,然后您将回过头来对其进行审查并加以解决。

一个月不是很长的学习编程的时间。大约30年来,我一直在以一种或另一种形式编写代码,包括在童年时期,但我仍然每天学习新知识。我可以肯定的是,在第一个月中,我就拥有第一台计算机,我花了很多时间玩《蒙克·曼》,而花了更少的时间试图理解我的参考书中的示例程序。以适合自己的步调学习。现在没有压力,那就太好了。

当您第一次学习编程时,应该做的是“四处寻找”。黑客(Paul Graham这类人)四处摸索,试图了解他们的系统如何工作,编程语言如何工作,工具如何工作。您尝试某些事情,然后失败,然后对所面临的问题进行推理,然后尝试其他尝试,直到您可以解决问题。不用太担心。

除非你父亲读过同样的书,否则他可能不明白你到目前为止学到了多少。读了一个月的建筑书籍(尤其是青少年)后,我不希望能够设计出房屋或摩天大楼。

为了使事情更直观,过去四周左右,我一直在Ruby on Rails框架的Engines功能的一些深奥的角落工作。从今天开始,我终于从用户的角度展示了一些东西。那时,我学到了很多东西,并且开发了很多非常有效的关键基础代码,但是我的专业水平等同于允许用户输入一些东西并返回其他东西:乍一看,这对休闲用户而言并没有那么令人印象深刻,但其中涉及大量工作。如果有人告诉我我已经搞砸了四个星期,我会很失望,但是我也知道他们对使事情变得如此“简单”的原因只有丝毫的了解。


2
+1用于在TI 99 / 4A上割牙。对我来说,几乎相同的故事很有趣,而开始做起来就更容易了(或者也许只是那样)。我的女儿(10岁)对学习编程表现出了兴趣,而我却最艰难地想着一种有趣而又迭代的方式来开始编程。对于OP,从零知识到1个月,按照PAR的要求去做就可以了。
Ominus

Ominus(和David),来看看Processing,这本书来自曼宁:manning.com/pearson
JasonTrue 2011年

4
并非所有书籍都+1。以我的经验,大多数书籍都是针对已经了解编程的人的。针对新手的人并不多,但我会推荐这个和/或这个
大卫

@David感谢您的链接。今天早上为女儿订购了这本书。
Ominus 2011年

@Jason:他提到,他的14岁孩子
塞浦路斯

19

听起来像在这种情况下,您的父亲不是一个在您的工作中给予您积极支持和支持的人。一个简单的解决方案:不要用他。

做自己的项目,之所以这样做,是因为它们很有趣,而不是因为他(或其他任何人)想要你去做。选择对您来说很有趣的东西。您无需从一本书中学习整个语言/技术。而是开始修补事物。最终,随着事情变得简单,您将寻找新的概念/挑战。而且您会发现自己想阅读今天发现无聊的书(或至少某些部分)。

如果您遇到困难并需要任何编码方面的帮助,stackexchange就是您已经发现的绝佳资源。


16

在我看来,您的父亲喜欢不切实际的期望,或者您有开始做事而不遵循的历史,或者两者都有。要意识到的重要一点是,在这里并没有什么真正重要的,重要的是您可以享受自己所做的事情,并且会做得更好。

我总是讨厌那些不让我开心的书。通过观察其他人做事,在我不了解某事的目的时提出问题,然后努力奋斗直到我弄清楚了这一点,我才能学得最好。挣扎使我们变得更坚强,并赋予我们最终成就的主人翁感,也许这就是为什么它很难从子宫中爬出来的原因。

话虽这么说,工具箱中最犀利的工具之一就是保持开放的能力,能够在批评中高效地开展工作,并且不能根据信息来源排除建议。好的编程书籍往往会吸引您,激发您的灵感,并希望您在碰壁时能重回书中。没有它们,您将无法做很多令人惊奇的事情,而不会一开始就确切地了解您在做什么。编程是一门深思熟虑的艺术,因此,我鼓励您选择以易于理解的方式编写的书籍。

我从事专业编程已经有一段时间了,我可以告诉你,我的满意是我自己的。我的老板不太理解为什么我写的东西太好了,当我告诉她我的日子时,我的妻子睡着了,而我的朋友则竭力避免向我询问我的工作。我很喜欢自己的胜利,偶尔也有机会与同行分享。在这种情况下,您父亲不是您的同伴之一。

继续前进,不断进步。习惯这样一个事实,即非程序员必须在被打动之前先看到视觉上令人印象深刻的东西。为什么不尝试编写Mandelbrot / Julia集生成器之类的东西呢?这可能会向他显示他正在寻找的进步,让他暂时离开您的案子。十年后,您将做非常类似的事情来让非技术经理退居二线,以便您可以完成真正的工作。

请记住,您之所以这样做是因为您喜欢它。


1
听这个人,他知道他在说什么;)
drxzcl 2011年

2
呵呵,我喜欢“非程序员必须在印象深刻之前就先看到视觉上令人印象深刻的事实”。编写分形生成器是我在计算机科学学校的第一个项目之一。我给自己留下了深刻的印象:)
纪尧姆

在所有这些线程中可能是最好的答案……
Venki

15

很难说这个问题最适合育儿论坛或编程论坛。我担心我的建议没有达到目标,因为我觉得这个问题纠结在一起可能是很多父子关系“问题”。

话虽这么说,我要重点关注的是您和您父亲存在的巨大机会,可以在你们两个人之间以某种方式分享热情。作为自己的父亲,并认识自己的父亲,我知道我们多么希望我们的孩子们倾听我们的声音,听从我们的教导并向我们学习。我们的孩子经常被迫做相反的事情。因此,你们两个有共同的兴趣这一事实真是太好了。

父亲肯定会固执,但我仍然认为您有机会通过这项工作来展现自己的个性和选择。不是出于一种反抗的精神,而是源于您自己的驱动力和雄心壮志,他们非常了解编程主题。就个人而言,这听起来像是您的父亲把您带入了编程的深渊。当然,它可能不是MIPS汇编语言或LISP,但仍然是C ++?Java的?kes 我喜欢编程,但是早点读那些书可能会使我全都关闭。开玩笑的 :)

所以我想问的是:什么启发了?您想建造什么样的东西?回答该问题,然后查找关于该主题的书籍和教程。过来问问题。建立东西。然后向您的父亲展示您的建造情况。告诉他你学到了什么。感谢他如此与您互动,并告诉他您感激他。我之所以这么说,是因为最终,这就是全部。他想和你分享一些东西,因为他爱你。有时,父亲很难用传统方式表达这一点,因此我们寻求这些间接方式来表达同一件事。有时我们甚至不愿意这样做。但不要忘记,所有这些都是与您更加亲近的愿望。


15

似乎还没有人建议这样做:

最近,他开始问我如何处理它,我向他展示了我制作的C ++程序,该程序将接受您键入的内容,然后为每个字母分配值(A是字母中的第一个字母,因此它获取值之1)..依此类推。然后,它将所有值相加并告诉您。因此,“ add”一词的值为9。

^^对他来说不是很令人印象深刻。他对我大吼,并告诉我我一直在做的事。这不是真的。他非常传统,固执,不听我说的话。我应该告诉他什么?

如果您考虑一下,对于使用计算机并且对编程一无所知的人来说,该程序不会给人留下深刻的印象。

告诉你的父亲你是如何做到的。向他介绍源代码。他可能(肯定)不会理解它,但是它将传达您投入了多少工作以及您了解了多少,也许他会对您实际完成了多少工作产生了更积极的印象。


3
这种应得的方式比得到的要多。一个很好的非对抗性解决方案,可以使他的父亲更加了解他的儿子的爱好。
Fergus在伦敦,2012年

@FergusMorrow同意。这个答案得票数太少。
stommestack 2013年

12

做你想做的

这是你的生活。你想做什么,就可以做什么。不要让任何人(甚至是您的父亲)控制您的生活。

我假设您或多或少喜欢编程并且想成为一名成功的专家(而您的父亲想要,每个人都想要)。但是,关键是,除非您知道自己在做什么并且除非喜欢,否则您永远不会成功

精通任何领域都很难。您不能仅在某人的影响下执行此操作。而且没有人知道你应该做的比你更好。您想今天休息,想整天玩游戏吗?那是您的决定,您对此负责。您应该学会对自己的决定和生活负责。每个成功的专家都必须对您的决定负责。

那么在那种情况下你会怎么做?站稳脚跟,不要听别人的话,不要做对您来说有意义的事情。


3
OP是未成年人(显然是14岁)。预计他的父母将控制他的生活,在接下来的四年里盲目地反击将很可能使每个人都痛苦。
jwodder 2011年

1
@jwodder:如果那些父母觉得他们需要控制自己的孩子在业余时间学到的东西,那么这可能是他尽快开始反击的最好方法。我也有孩子,一个和大卫一样大。如果我的孩子不能告诉我我以为她错了,那我会为她的未来而担心。14岁不是7岁的孩子,他对这个世界只有一两件事,而父母却不了解。而且,如果他证明自己不是他们想要的人,那么他们就已经失败了整整一年,也没有机会追赶过去,最重要的是继续从事他们14年的工作。
2011年

10

您要求书籍。老实说,比读书更能解决问题。找到您感兴趣的难题或问题。欧拉计画是一个很好的资源,CodeGolf有时会提出一些有趣的问题。我的第一个编程项目是找到素数的C ++应用程序。我当时使用的教科书提供了这样一个简单的实现:

bool isPrime(int x){
    int c = 1;
    while(c < x){
        if(x%c == 0){
            return False;
        }
        c=c+1
        /*c+=1 if compiler is set to '98 or more recent*/
    }
    return True;
}

这是非常低效的。我发现前500个具有该功能的素数,然后厌恶它的缓慢性。爸爸和我有很多时间尝试进行上述优化,尽管这是一个简单的应用程序,甚至没有将其输出写入一个文件,但我感到很开心,并且最终的产品很棒。

您会通过读书学习吗?是的,但是我不能强调仅仅混用一种编程语言并通过反复试验学习的价值。

如果您正在爸爸学习编程请停下来并找到自己的理由。我仍然束手无策,以为他建立一个大批量的自动交易系统。当我说您需要找到想从事的工作时,我是非常认真的,因为否则您可能会完全放弃编程,因为您会把它看作是一项琐事,而不是一项业余爱好或一项运动。

尝试阅读Linus Torvalds的书“ Just For Fun”,其中他叙述了Linux操作系统的起源。标题说明了一切。

说真的 只是去解决一些问题。被卡住时,请老人介入。

如果您父亲不欣赏您的工作,那不是因为他感到失望。他是一名建筑师,他不知道某些事情有多复杂。如果只是逻辑,请尝试引导他遍历您的代码,并使他理解您通过编写代码所学到的逻辑的含义。


TL; DR


  1. 只是一团糟。解决问题。如果您无法解决,请找到其他人的解决方案并尝试理解它。
  2. 玩#1
  3. 每当您学到东西或取得进展时,请记住告诉您的老人。
  4. 快节奏。每个人都以自己的方式和自己的速度学习。坚持下去,最终您将拥有完成所需的技能。

1
实际上,他特别声明他不要求读书。...其余的我都同意
Paul

6

尝试查找一本专门针对新手的编程入门的书。也许像Hello World之类的东西沃伦·桑德(Warren Sande)为儿童和其他初学者设计的计算机程序

您还应该查看图书馆的内容。大多数图书馆应该有一些入门书籍。


5

在我看来,您有两个问题:

  1. 您想学习编程并使之保持乐趣(乐趣是必不可少的,它使一切变得更容易)
  2. 您的客户确实对编程一无所知,但是对自己的想法有所了解。(你的父亲)

恕我直言:

  1. 对于第一个问题,您只需要访问这样的站点并像以前一样问问题即可。查找类似以下资源的https://softwareengineering.stackexchange.com/questions/62224/how-to-become-a-professional-programmer/62263#62263。想一想您要创建的东西(游戏,任务清单,电影收藏管理系统,次佳社交平台),然后开始编写代码。还是从解决难题开始?在哪里可以找到编程难题和挑战?

  2. 您的第二个问题更加困难,您需要教育您的父亲(尽管他似乎不太愿意)。在您学习的同时,您会更好地向他解释他对编程的困难。您可以尝试使用像解释她这样的隐喻。什么是好的编程隐喻?。另一个提示是,非程序员通常不会获得出色算法的复杂性,但容易被外观精美的接口所困扰。根据您选择的平台,您可以轻松生成漂亮的界面以打动您的父亲。使用例如:

希望这可以帮助。


+1我喜欢你的信息,但我认为这里没有人建议这个孩子弄清楚他父亲的期望。在不知道父亲的期望的情况下排除父亲的期望似乎为时过早。
2011年

5

我想补充一点,就是我一生中曾经处于非常相似的位置,我父亲并不真正了解积极的强化意味着什么。但是,鉴于我对他有时遭到的严重反对一直保持坚韧不拔的态度,因此我设法坚持了下来。大约二十年后,与我父亲的关系发生了很大变化,改善了,但那时的细微差别仍然存在。

这只是您一生中的艰难时刻,重要的是,您比其他任何事情都乐在其中。


5

关于编程语言,我同意您应该只关注一种语言。

实际上,我推荐您还没有的一个:Python。Python是一种非常易于学习的语言,但也非常强大。C ++,Java,PHP和Javascript都更加复杂。

曼宁(Manning)有几本关于使用Python编程的书。我强烈建议您使用“ Hello,World!”,即使它针对的是年龄稍小的年轻人。

如果您确实想继续使用C ++,那么我推荐这本书:

虽然它更多是“参考”,而不是“教程”。我不了解一个好的C ++教程-那里有很多“快速自学C ++”的书,但是我认为它们不是很有用。(C ++是一门很难学习的语言大多数C ++程序员都是从一种简单的语言开始的)。


同意,python是首选语言。C ++很棒,但是它非常强大且难于使用-就像在学走路之前先学飞机一样。使用python,您可以立即使用库并做一些有趣的事情。您的string_add函数是5行可读代码。例如,def string_add(a_string): \n\t sum = 0 \n\t for letter in a_string:\n\t\t sum += ord(letter) - ord('a')+1 \n\t return sum(\ n-新行\ t -tab)或使用更高级的功能编程即可。 string_add = lambda a_string: sum(map(lambda ch: ord(ch)-ord('a')+1, a_string))
jimbob博士2011年

+1我花了大约一年的时间来学习C ++,而我只花了十分钟的时间来学习Python。
2011年

+1我还建议使用Python的Head First编程
大卫,

4

关于C ++,Java,PHP,JavaScript和Android(以便您可以在它们之间进行选择,因为尝试一次掌握所有内容可能会失败):

  • C ++:这是一种非常强大的语言。但是太强大了,太宽容了,太神秘了。您必须了解很多事情才能开始。我认为,这对于启动程序来说是一种糟糕的语言选择。
  • Java:对于初学者来说是一个流行的选择。从某种意义上讲,它与C ++相反:C ++为您提供了一种可以想象的任何方式来射击自己,而Java则尝试不允许任何超出您控制范围的事情,这实际上是瘫痪的。它太简单,太琐碎,太局限了,无法向您展示很多编程知识。而且,如果不了解很多标准API和几个框架,就无法在Java中完成很多工作。Java作为一种技术可以提供很多东西,但是作为语言却有其缺点。
  • PHP:一种非常流行的语言,主要是因为其较低的进入门槛。PHP作为一种语言已经成熟,现在具有人们期望现代语言所具有的功能。但是,由于历史原因,PHP带来了很多负担。因此,尽管它实际上允许编写好的程序,但很少有人这样做,您将不会找到太多有关如何做的信息。标准库是一团糟。如果您决定编写PHP,我的建议是从一开始就开始使用框架,因为它们通常可以为常见问题提供可靠的解决方案。我个人建议使用symfonyflow3CakePHP。但是,我的建议是:不要从此开始。
  • JavaScript:一旦您了解它,它就是一种功能强大的语言。它有一个“很少”的怪癖,但实际上您应该能够忍受。尽管最初用于向HTML页面添加交互性,但是现在可以在许多字段中使用JavaScript。除了经典用途外,它还可用于具有AppceleratorPhoneGapAIR等平台的桌面和移动应用程序开发,并使用node.js创建服务器。
    有很多JavaScript库和框架。我建议您检查敲除jQuery以及qooxdooext.js如果您正在寻找成熟的东西。另外,对于服务器端开发,您应该签出express.js
    另外,我想指出一句CoffeeScript,一种可编译为JavaScript的语言,但有很多其他功能,这些功能派上用场了。
  • Android:与其他四个不同,这是一个平台。应根据您要做什么选择平台。如果它是针对Android设备的移动应用程序开发,那就去吧。不确定一开始是最好的事情,但是最终您需要创建自己认为很酷的东西。

无论如何,真正重要的是让您感到愉快。您创造的东西,您认为很酷。那可以解决您的一些需求,或者很有趣。编程适合那些喜欢它的人。您需要一个工具集,该工具集允许您使用几行代码来构建应用程序。JavaScript / CoffeeScript可能是一个很好的起点。
就个人而言,我想向您介绍Ruby。它教会了我很多关于编程的知识,但不幸的是,当我开始编程时,还没有了解它。基本上,有两本艰巨的书籍(两本都是免费的):

  • 为什么要使用Poignant指南 -就我个人而言,那本书对我来说有点分散注意力(笑话,漫画等),但您可能会喜欢。
  • 实用的 Ruby-非常适合我。有点干,但是只处理基本要素。

此外,我建议您检查一下鞋子。这是一个很棒的工具,提供了很棒的集成帮助,包括参考资料,教程和演示。您将在几天之内启动并运行第一件事。

而且,也许以后,我想将您指向haXe。我认为这是一种很棒的语言(我选择的语言),并且最近刚刚发行了一个全新的初学者指南。但是haXe没有可用的工具,这使得创建应用程序和使用JavaScript和Ruby一样简单。因此,您一开始可能会感到乏味甚至令人沮丧,从而破坏了整个目标。


我绝对会建议他使用C / C ++。我做了同样的事情,发现学习任何语言都非常容易,因为几乎所有现代lang都从C / C ++派生出一些东西。
CyprUS

@CyprUS:虽然我同意,但两者都值得学习,但我也不认为这两者都是开始学习编程的好选择。另外,我看不到LISP或Smalltalk系列如何从这两者中获得任何必不可少的东西。
back2dos

我认为我们必须让男孩决定他想做什么。就是说,LISP / SmallTalk太深奥了以至于无法通用(我认为)
CyprUS 2011年

@塞浦路斯:我只提供建议。最后他必须选择。我不是说LISP或SmallTalk,而是他们创建的(部分)重叠的现代语言类,最著名的是Ruby,Squeak,Objective-C,Lua,Scala,Erlang,Clojure,JavaScript,F#,Nemerle,Scheme。实际上所有这些语言都被使用过,甚至有一些甚至是最受欢迎的语言之一
back2dos

3

一个月内可以期望得到很多。相反,您应该尝试一次集中精力学习一种语言或范例,否则可能会变得势不可挡。一次推得太多也是关闭它的好方法。通过研究您感兴趣的特定程序,您可能会学得更好。如果您感兴趣的是Android手机,那么使用Java而不是C ++可能更好。他可能一直期望一些像典型客户那样的用户界面东西,所以不要因失望而灰心:)

如果您不得不坚持使用某些书籍,那么一些“优先学习”书籍可以帮助您减少学习的难度。


3

我认为您应该暂时将更正式的东西收起来,看看Scratch- http : //scratch.mit.edu/- 它可以让您以更轻松的方式处理大多数编程结构,同时仍然可以学习这些东西您需要像循环等。

它还允许无缺陷的多线程,这可能是手工最难的部分,并且在当今世界中产生有趣的结果是必需的。

不要小看它,因为它使用颜色和类似乐高积木的编程方法。您可以做很多事情而不会迷失技术细节。


+1-从零开始学习是一种了不起的有趣的方式。实际上,它的设计考虑了年龄段,但是仍然是Turing Complete。另外,请查看BYOB(构建自己的块)以获取Scratch的面向对象扩展。
Morgan Herlocker 2011年

3

询问您的父亲,他是否可以按照您的年龄设计高层建筑。那就是编程。学习需要时间,因为有很多东西要学习。就像骑自行车一样,只有您有上千个踏板,齿轮,手柄,旋钮,而且您无法在任何给定时间选择要使用的踏板。这需要练习。

我不怀疑你 您很早就涉猎C ++,成为一名程序员的目标。这对印象深刻。

坚持下去,祝您在程序员生涯中一切顺利!


3

我知道已经有很多答案了。但是我还没有看到这样的建议:设法让你的父亲来帮助你。尝试在C ++书籍中挑一些毛茸茸的东西,您可以理解并请他帮助。
给他这本书,让他爬上C ++。我很确定,这会让他意识到编写代码的难度。


3

为了自己的利益,尝试扭转这种局面。只是接受您到目前为止所取得的成就还不够,并尝试做得更好...如果您不开始克服困难并从现在开始改善,当您为老板工作时,您将遇到这样的困难时期。

如果我年纪比我大两倍的话...


3

父亲的投入不利于您的学习过程。是的,有许多其他人提到过的学习编程的方法。但是,我认为您在C ++中显示了惊人的进步。在Java编程的第一学期结束后,您添加的程序将几乎无法处理。

如果要继续,有两件事必须解决:

1)处理你的父亲。

瞧,每个爸爸对自己的孩子都有奢侈的梦想。但是,他们的期望可能很高,最终会导致某些童话中甚至不可能发生的事情。我建议在这种情况下请外部的人来更好地评估您的进步,并让您的父亲踏实。您可以尝试与具有编程经验的认识的家人/朋友交谈,甚至该社区中的人们都可以代表我们自己的经验和知识给他发送电子邮件。这是最重要的一步,因为如果您的父亲不冷静下来,您将一起失去兴趣。

2)找到一个焦点。

不利于一次学习所有内容。选择一种语言并坚持使用。当您阅读有关特定语言的书时。完全按照书中的示例进行操作并非一帆风顺。对于某些人,但不是全部(特别是我自己),反流是一个学习过程。从尽可能多的角度和您感兴趣的角度进行攻击很重要。不同作者以相同语言编写的书,但是使用不同,可能会增加您对如何使用该语言和洞察力的好奇心。您对编程的需求(制作游戏,设计应用程序,测试等)。您还可以进行个人冒险来创建程序。不管您当前知道什么,先弄清楚自己想做什么,然后在编程时对其进行研究。随着时间的流逝,您 我最终会想尝试其他相关的编程语言。您可能还会意识到,您不想在一起进行编程。

首先,请记住,重要的不是最终结果,而是旅程。别忘了玩得开心!


3

您已针对您的情况的编程方面获得了一些不错的反馈和建议。但是我想从不同的角度添加一些东西...

我给您的印象是,您对父亲有一些消极的想法-他给您施加了压力,并发表了一些评论,使您感到悲伤和担忧-并使编程失去了乐趣。真可惜,我想这里的大多数人都会同意编程很有趣-我从事编程已有30多年了,但我仍然觉得它很有趣。

但是,我认为您的父亲确实在您身边。他做了他认为正确的事情,他正在尝试提供帮助,他为您购买了书籍,为您提供了良好的开端。但是他错了(我以爸爸的身份讲话,有时候我们确实做错了!)。对他来说,书籍可能是他从事建筑事业的起点(我想这是在互联网和www普遍出现之前开始的)。因此,以他的思维方式,书籍是您的起点。

因此,假设您的父亲站在您身边(并且我确定他在您身边),那么问题在于他只是不了解您刚开始编程时会遇到的困难-因此,请向他展示他曾经做过的所有答案在这里发布-我确定您的父亲是个好人,他会理解的,他会为您提供支持。

祝您编程愉快!您似乎有个不错的开端。


也许添加“神童”不会太多吗?我可以向您保证,对我的许多朋友来说,制作这样的程序将很困难
CyprUS 2011年

@塞浦路斯-我没有对他的特殊能力发表任何评论(尽管我确定他们很好)。真的和他父亲有关。
西蒙·

3

在其他答案中未提及的一件事:

您可能知道,小时候(我14岁)并被要求从枯燥的书籍中学习编程并不是最简单的事情。我总是分心。.我之前告诉过他,我不需要买书,我可以看在线教程..但是,他太老套了。他只是让我使用这些书。

您当然需要在那部分上进行工作。互联网是每个程序员的关键工具,您必须使用它。

首先,编程是关于解决问题的。如果您不知道如何用XYZ语言来做X,您可以用它搜索并寻找解决方案。* 快速找到解决方案与使用键盘对程序员一样重要。

其次,另一个关键技能是使用文档。书籍通常就像教程一样-它们提供了指导,但它们并没有为您提供完整的知识-而这正是使用文档的方便之处。例如:您使用C ++编程,您有一个月的经验。迟早(我很快就会说),您将需要使用标准库...或者您已经使用过它?如果是这样,那是一个好兆头,在这种情况下,您的书可能还不错。无论如何,了解C ++标准库中已经存在的内容以及不存在的内容将很有用。为此,在编程过程中始终保持打开http://cplusplus.com/之类的引用很有用。


互联网是至关重要的编码,更重要的学习代码。如果您的父亲不理解它,并希望您使用书籍学习编程,那么他的方法会适得其反,并会使您的学习进度变慢(并可能养成不良习惯)。


2

他不了解倾向于编程的过程。您可以阅读所有这些书,但仍然无法写出像样的东西,因为花费时间最长的是对您可以做什么以及如何进行的真正了解。

您已经告诉您的父亲,您喜欢编程-不要让他为您毁了它。并且当然不要尝试学习5种编程语言,至少现在不是。坚持使用相对简单的Java之类的语言,一旦掌握了它就可以将其转移给其他人。

关于书籍,顺便说一句,这是正确的做法,因为您以正确的方式学习了语言。遵循教程通常会导致养成不良习惯等。

祝你好运;并让他知道您做得正确,进度很慢,但是在学习过程中学到了很多。


2

我认为很多年龄在25-35岁之间的程序员在玩Nintendo和Sega时就长大了。他们/我们中的很大一部分在您可以自己制作游戏时就改变了为什么要玩游戏的想法。这是一种非常自私的动机,可以促使您成为更好的程序员。这是一个开始。在生活的后期,您可能会从编写视频游戏(虚拟问题)过渡到赌注更高的游戏(现实问题)。就像该患者的处方药不会与另一种处方药产生不利影响一样,这些卡车能以最少的汽油量提供最多的运送量以减少污染吗?或者我如何确保购买此库存将购买以我想要的价格,同时有1000个其他价格。


1

建筑植根于物理世界,从出生起就一直在学习。对于建筑专业的大学生来说,与乐高玩具一起玩将浪费时间。您的父亲假设,由于您了解数学,因此您熟悉基础知识,并且应该能够开始制作东西。嗯,那不是真的。他对编程一无所知,因为他甚至没有意识到它不是数学的分支

编程是一个新世界。掌握它的最好方法是像学习物理世界一样学习它:沉浸于自己的身体中并进行实验。一言以蔽之现在是乐高时间。

为了进行比较,请考虑宇航员。他们也有一个完全没有准备的新世界。他们必须从诸如如何在整个房间中移动之类的基础知识入手。

下一步,我建议创建一个游戏,让计算机选择一个随机数,然后尝试猜测,然后告诉您猜测的是太高还是太低。

也尝试许多不同的语言!并非一次全部,而是一次一次。

当您积累了一些经验后,制作一款成熟的视频游戏将成为一名熟练的程序员,可能面临的最大挑战之一。电子游戏几乎涉及到我们学科的每个角落,建立一个游戏是提高技能的好方法。它也是一个不断学习和学习更高水平技能的理想场所。


0

花费自己的时间学习编程语言,您越会练习,越会投入编程,这一次您创建了一个非常简单的程序,对于初学者来说很可爱,但是随着您的前进,请确保您确保自己创建了一个您父亲实际可以使用的好程序,如果您问我,这就是我如何帮助父亲工作。

只是跟您父亲说一句话,向他解释一下事情,我相信他会真正理解,并且我相信有一天您将成为一名出色的开发人员。


0

我以软件工程师的身份学习,在我的教育中学习编程的进步不仅仅是阅读本书。

首先,我建议您学习C,因为它是一种易用的语言,并且许多其他语言(例如C ++,objective-c)都是基于C的。我们这样做的方式是必须购买微芯片(在我们的案例中,是一个带有STK 500套件的Atmel Mega16,它只是一块带有LED和按钮的电路板),然后我们就玩了一下,编程了一些程序来使之成正比。这比仅阅读和编写IMO问候世界程序更有趣。

当C成为您的乐园时,请继续使用C ++和面向对象编程(OOP)。OOP是许多语言和编程思想中的关键概念,因此如果您认真对待编程,则必须使用OOP。在深入研究OOP之前,请务必先了解它的理论-否则可能会很困难:-)

最后但并非最不重要的一点是,我建议您研究不同的数据类型,例如堆栈,队列,堆等,这在您编程和阅读新语言时非常容易理解。

祝你好运,我的朋友!


我会推荐使用C ++以外的东西来学习OOP。Python是一个很好的例子。C ++是一种复杂的语言,尝试使用它来学习OO概念非常痛苦。但是,一旦您真正学会了它们,便会知道如何使用其许多本来就不透明的功能。
nmichaels 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.