如何将50岁以上的文盲计算机引入编程中


10

前几天,我父亲问我一个我从未期望过的问题。

“我如何学习C ++?”

我父亲今年已经56岁了,计算机对他来说是一个遥不可及的概念。除了呼叫号码(没有快速拨号或联系人)外,他不知道如何很好地使用电话。尽管他已经开始学习计算机,但他知道如何打开Internet(在Windows中)和浏览(到此为止,他已经完全通过自己的在线网站成功完成了几份工作申请,也为他提供了职位) )。但是,这些都是狭窄的经验,实际上并没有多大意义。

虽然他可能没有背景,但我父亲知道如何阅读。我的意思是阅读是一种技能,而不仅仅是一种能力。他几乎没有大学学历(财务问题,家庭等),并且有幸完成了高中毕业,但仍然自学成才,成为电工大师,至今已经有30年了。他在吉他方面也做同样的事情,学习演奏非常专业的水平,并因其技巧而受到赞誉。在高中时,他拿起了一本举重书-当时是他的高中唯一一位被国家标准正式认可为“运动员”的人。

在所有情况下,他只需要阅读一些内容即可。有东西教他。他像海绵一样吸收信息。

我毫不怀疑我父亲的动机或能力,所以我的总体目标很简单:

让我的父亲进入计算机世界,让他走上编程的道路。

我坚信,一旦我掌握了基础知识,他的干劲和阅读能力将使他继续前进。

所以我问大家:我应该从哪里开始呢?最好的资源是什么?我应该让他启动Linux而不是Windows?C ++是个坏主意吗?

请记住,他需要(IMO)首先学习计算机,然后首先掌握编程知识(“ Hello world”经验)。

出于金钱的缘故,我希望他能阅读免费的在线资源,但无论如何,无论是印刷版还是网上付费的任何好的建议,我们都欢迎(我以后可以考虑购买)。

而且,我打算从C ++开始(没有Python,Java等),因为我最了解C ++,并且将在代码开发过程中为他提供帮助。(我现在几乎没有其他语言的知识)。

编辑:我收到很多使用Python的持久性建议。我想做C ++的唯一原因是我知道它,当我的父亲需要帮助时可以在那里。我第一次接触编程是Java。我学过Java,并且擅长Java。我愿意接受其他建议,但请有效地应用您的建议。

编辑#2:我知道这里可能缺少我的方法/思维/知识。我是大学二年级的CS专业。如果您不同意我的帖子,请告诉我为什么-给我想法,信息-这就是我首先要问的原因。将我的总体目标缩小到可以实现的特定目标。


1
这个问题与专业软件开发无关。尽管在今天的过程中,我们必须与其他人(无论是技术人员还是非技术人员)进行互动,有时还要教他们,但我们不是专业的老师或讲师,也无法就如何最好地教别人提供好的建议。如果您想进一步讨论,可以在我们的Meta网站上提问。
Thomas Owens

@ThomasOwens您怎么知道社区中没有专业的老师或讲师?观看次数较少的Meta真的是我必须去的地方吗?我想我可以接受(尽管我真的很想留在这里),请为我迁移。如果我可以做一些事情来使这个问题适合标准,以便SO /程序员社区更好地看待它,请帮助我。
skippr 2012年

1
据我所知,没有网站可以接受这个问题。我只是浏览了列表,却没有看到。如果您想进一步讨论,请在Meta上提问。
Thomas Owens

@ThomasOwens好吧,我不是来这里抱怨或拖钓的,所以我会尽力而为。谢谢
skippr 2012年

与评论相反,我认为C ++实际上是很棒的第一语言。特别是对于初学者。从平凡的控制台IO开始,在这方面,C ++比Java或C#对初学者更友好。更少的模板代码也使他感到困惑。当然,有些高级功能会引起混乱,但是您可以进一步限制自己使用一些基本功能。
Tydus勋爵,2012年

Answers:


13

首先,即使您自己非常了解C ++,对于初学者来说,它也是一种可怕的,可怕的第一语言,如果他想成功地学习编写代码,我不能强烈建议他尽可能远离它。学习编程与语言无关,而是与学习表达形式逻辑中的抽象需求有关 C ++使您难以集中精力,因为您经常遇到与语言有关的问题。

如果他想学习用形式逻辑表达思想,那就去做些简单的事情。我的选择是Pascal(用于应用程序级开发)或Python(用于脚本级工作),因为它们的设计都是以直观和易于学习为核心。一旦他真正了解了如何编写代码的原理,然后如果他真的特别在乎C ++,就可以开始学习。

出于同样的原因,不要在Linux而不是Windows上启动他,因为那样一来,他有两个需要重点关注的问题:同时学习Linux和学习编码!尽量减少干扰。

至于实际的编程资源,可以很容易地在网上找到教程,但是我发现学习编程的最好方法是通过编程。找到您想做的事情,然后开始弄清楚该怎么做。

几年前,我看过一个游戏,然后想到:“我可以做到,而且我可以做得更好。” 因此,我解雇了Delphi,并开始弄清楚所涉及的原理。我仍在从这个个人项目中学习新知识,并且一路走来,我已经成为一名真正的好程序员!所以尝试一下;问你父亲他是否愿意编程会做些什么-并确保这是可能的,并且因为他还没有经验,所以范围很小-然后与他坐下并开始想办法它。

如果他有任何问题,请给他一个StackOverflow帐户。:)


4

我以为你爸在C ++的兴趣肯定是整齐的,但它不会是我的第一个编程语言的选择-除非他有一个非常具体的要求,他希望会见。(即使那样,学习另一种更简单的语言之后学习C ++ 仍然可能容易得多。)

有一些对编程很重要的事情:

  • 解决抽象问题的能力
  • 将问题分解为足够小的碎片以解决问题的能力
  • 能够以迭代的方式构建解决方案的能力,并且足够小,可以向前推进进度
  • 特定语言的语法和语义。

在许多方面,语法和特定语言的语义是接近年底的必要技能进行编程。毕竟,如果您接近正确,大多数编译器都会告诉您您犯了什么错误-尽管解码特定编译器所说的内容需要经验。

因此,我建议您的父亲首先使用一种更简单的编程语言:Ruby,Python,C,C#,Haskell等。 d想知道完整的新手是否也有同样的“鱼死水了”的感觉。)

坚持使用更简单的语言意味着您的父亲会更早获得更大的成功,并且会更容易“玩耍”。许多语言的交互式REPL循环是学习的绝佳场所。

一旦您的父亲熟悉了函数,类,对象,方法,那么C ++的细节和细微差别就不会让人感到不知所措。哎呀,甚至用C开头也会更容易:这不是宽容的,但是担心的功能却更少。

您对Linux和Windows感到好奇。我不确定区别有多大意义。如果他已经熟悉一个或另一个环境,那么切换只是另一个障碍。如果他不知道,我建议使用Linux,但是主要是因为安装好的工具非常容易:apt-get install <foo>可在大多数发行版上使用,而不支持的发行版apt通常提供类似的东西。一分钟后,安装了新的整洁软件包,通常比为我找到一个可靠的预编译Windows二进制文件下载源所需的速度更快,而该源代码不需要特洛伊木马。


我父亲肯定具有对程序员至关重要的“思考能力”。我现在在他所做的事情中看到了他的常识和智慧,而且我知道它可以在编程中应用。假设我们有一个学习的最佳人选。我的问题是:我们如何到达那里?
skippr 2012年

嗯,我将这些技能分为不同的类别,以至于陷入困境的语法和语义可以使其他技能的发展蒙上阴影-一种具有难以理解的规则的语言将使抽象流程更容易-但是我似乎没有很好地说明这一点。
sarnold 2012年

1
在建议的语言中,我当然会偏爱Python。但是,如果您的父亲在视觉上倾斜,Processing(请参阅www.processing.org)可能是一个有趣的介绍(尽管存在许多不适用于它的问题)。
詹姆斯·扬曼

@James:呵呵,我想我以前从未见过这样的短语:使用... PDF输出的交互式程序。:)
sarnold 2012年
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.