如何提高将任务/问题转换为程序的技能(算法思维)?
这是最常见的问题之一。
一般的答案是:通过编写大量程序。
但是,有一个简单的练习可以帮助您建立该技能:
● 「选择你每天都做的活动」 ,比如做早餐或类似的事情。这应该不会太容易,但也不会太难。
● 「写下您应该为活动执行的步骤」 ,但在与实际执行活动不同的时间执行。(写下下午做早餐的步骤。)
● 下次您执行该活动时, 「记下您的笔记并尝试虔诚地遵循这些步骤」 。尽量不要偏离您写下的步骤,如果必须,请记下差异。
● 「改进你的算法,直到你满意为止」 。
● 「尝试不同的活动(算法)」 。任务变得越来越容易。
尽管听起来很愚蠢,但它确实有效。以上方法已经在许多学生身上进行了尝试,并证明可以产生显着的进步。
我无法为一个项目想出任何很酷的新想法。我只是缺乏创造力吗?其他程序员是如何受到启发的?
对于初学者来说,这是Chuck Close关于(不是)等待灵感的一句好话:
我喜欢给年轻艺术家或任何愿意听我的人的建议是不要等待灵感。灵感是给业余爱好者的,我们其他人只是出现并开始工作。
如果你等着乌云散开,一道闪电击中你的大脑,你就不会做很多工作。
「所有最好的想法都来自这个过程:他们来自工作本身」 。事情发生在你身上。如果你正坐在那里想出一个伟大的艺术创意,你可以坐在那里很长一段时间,然后才会发生任何事情。但是,如果你刚开始工作,你会想到一些事情,你会想到其他事情,而你拒绝的其他事情会将你推向另一个方向。
「灵感是绝对不必要的,而且在某种程度上具有欺骗性:你觉得你需要这个好主意才能开始工作。」
只是坐在那里等待灵感的火花,你很少会得到想法。如果你继续尝试构建一些东西(任何东西!),你的时间会花得更多,即使这个想法看起来有些愚蠢或已经完成。
毕竟,这就是艺术家和音乐家所做的——他们不一定会从尝试创作极具创意的绘画或创作自己的音乐开始。相反,他们画风景或花瓶,或翻唱现有的歌曲。同样,在提出项目创意时不要感到有义务。「重新实施现有程序是一项历史悠久的传统——看看你能走多远!」
但无论如何,这里有 「一些其他想法和技巧可以帮助您提出自己的灵感项目」 :
- 「尝试重新实现现有项目」 。就像初学音乐家从翻唱其他人写的歌曲开始一样,从重新实现其他人制作的程序开始可能会很好。例如,2D 街机游戏是一种流行的选择——像“Pong”或“Space Invaders”这样的游戏对初学者来说非常可行,并且仍然会教给你很多东西。常见问题解答包含指向更多项目想法的链接。
- 「尝试将编程与另一个爱好联系起来」 。编程是一项非常有用的技能,您可以将其应用到各种领域,甚至是与计算机科学完全无关的领域。
例如,如果您对政治感兴趣,您可以尝试分析投票池和趋势;如果您对音乐感兴趣,您可以尝试编写数字音板;如果您对体育感兴趣,您可以尝试编写梦幻足球追踪器或预测器,如果你拥有一家企业,你可以写一些东西来帮助你跟踪库存...... 「在这里,对计算机科学以外的兴趣很有用」 。
- 「试着记录让你恼火的事情」 。如果你在生活中发现任何你不喜欢做的事情或发现重复的事情,问问自己这是否是你可以自动化的事情。要了解计算机可以自动化哪些类型的事情,请参阅自动化无聊的东西。
本指南使用 Python,但您可以使用任何编程语言完成它提到的所有事情。或者,也许可以尝试使用谷歌搜索“家庭自动化教程”以获得更多物理解决方案。
我如何学习典型计算机科学学位所涵盖的主题?
如果您对大学或学院级别的大多数标准计算机科学课程所涵盖的自学材料感兴趣,以下链接提供了一个很好的概述,以及指向其他学习资源的链接:
● 每个计算机科学专业的学生都应该知道的事——马特·梅特专注于提供不同领域的高级概述,更重要的是,它们为何有价值。还包含一些阅读建议。
● 开源计算机科学学位 - 开源社会提供更多具体的路线图,每个主题都包含大部分 Coursera 课程的链接。● 自学 CS与之前的资源类似,除了它混合了对书籍和视频讲座的推荐。上层建议主要关注系统(例如操作系统、数据库……)。
● 自学的现代计算机科学课程这个资源有点不合常规,它推荐了一种更加数学的方法来学习计算机科学,重点关注离散数学、函数式编程、软件验证、证明、类型论和复杂性理论等主题。
请记住,高质量的计算机科学学位往往非常严谨和苛刻。如果您有兴趣走这条路,您可能需要几年时间和大量的努力才能通过自学获得类似水平的教育。
-
编程
+关注
关注
88文章
3609浏览量
93680 -
程序
+关注
关注
117文章
3782浏览量
80990
发布评论请先 登录
相关推荐
评论