怎么前进将使命/问题转换为程序的技术(算法思维)?
这是最常见的问题之一。
一般的答案是:通过编写大量程序。
可是,有一个简略的练习能够帮助您建立该技术:
● 挑选你每天都做的活动,比如做早餐或类似的作业。这应该不会太容易,但也不会太难。
● 写下您应该为活动履行的过程,但在与实践履行活动不同的时间履行。(写下下午做早餐的过程。)
● 下次您履行该活动时,记下您的笔记并测验虔诚地遵从这些过程。尽量不要偏离您写下的过程,假如有必要,请记下差异。
● 改善你的算法,直到你满意为止。
● 测验不同的活动(算法)。使命变得越来越容易。
尽管听起来很愚蠢,但它的确有用。以上方法已经在许多学生身上进行了测验,并证明能够产生明显的前进。
我无法为一个项目想出任何很帅的新主意。我仅仅缺少创造力吗?其他程序员是怎么受到启示的?
对于初学者来说,这是Chuck Close关于(不是)等候灵感的一句好话:
我喜欢给年轻艺术家或任何乐意听我的人的主张是不要等候灵感。灵感是给业余爱好者的,咱们其他人仅仅呈现并开端作业。
假如你等着乌云散开,一道闪电击中你的大脑,你就不会做许多作业。
所有最好的主意都来自这个过程:他们来自作业本身。作业产生在你身上。假如你正坐在那里想出一个巨大的艺术构思,你能够坐在那里很长一段时间,然后才会产生任何作业。可是,假如你刚开端作业,你会想到一些作业,你会想到其他作业,而你拒绝的其他作业会将你面向另一个方向。
灵感是绝对不必要的,而且在某种程度上具有欺骗性:你觉得你需要这个好主意才干开端作业。
仅仅坐在那里等候灵感的火花,你很少会得到主意。假如你继续测验构建一些东西(任何东西!),你的时间会花得更多,即便这个主意看起来有些愚蠢或已经完结。
究竟,这就是艺术家和音乐家所做的——他们纷歧定会从测验创造极具构思的绘画或创造自己的音乐开端。相反,他们画景色或花瓶,或翻唱现有的歌曲。同样,在提出项目构思时不要感到有义务。从头施行现有程序是一项历史悠久的传统——看看你能走多远!
但无论怎么,这里有一些其他主意和技巧能够帮助您提出自己的灵感项目:
-
测验从头完结现有项目。就像初学音乐家从翻唱其他人写的歌曲开端相同,从从头完结其他人制造的程序开端或许会很好。例如,2D 街机游戏是一种盛行的挑选——像“Pong”或“Space Invaders”这样的游戏对初学者来说十分可行,而且依然会教给你许多东西。常见问题解答包括指向更多项目主意的链接。
-
测验将编程与另一个爱好联系起来。编程是一项十分有用的技术,您能够将其应用到各种范畴,甚至是与计算机科学完全无关的范畴。
例如,假如您对政治感爱好,您能够测验剖析投票池和趋势;假如您对音乐感爱好,您能够测验编写数字音板;假如您对体育感爱好,您能够测验编写梦幻足球追寻器或预测器,假如你具有一家企业,你能够写一些东西来帮助你盯梢库存……在这里,对计算机科学以外的爱好很有用。
- 试着记载让你恼火的作业。假如你在生活中发现任何你不喜欢做的作业或发现重复的作业,问问自己这是否是你能够自动化的作业。要了解计算机能够自动化哪些类型的作业,请参阅自动化无聊的东西。
本指南运用 Python,但您能够运用任何编程语言完结它说到的所有作业。或者,或许能够测验运用谷歌搜索“家庭自动化教程”以取得更多物理解决方案。
我怎么学习典型计算机科学学位所包括的主题?
假如您对大学或学院等级的大多数规范计算机科学课程所包括的自学材料感爱好,以下链接供给了一个很好的概述,以及指向其他学习资源的链接:
● 每个计算机科学专业的学生都应该知道的事——马特梅特专心于供给不同范畴的高级概述,更重要的是,它们为何有价值。还包括一些阅览主张。
● 开源计算机科学学位 – 开源社会供给更多具体的路线图,每个主题都包括大部分 Coursera 课程的链接。
● 自学 CS与之前的资源类似,除了它混合了对书本和视频讲座的引荐。上层主张主要关注体系(例如操作体系、数据库……)。
● 自学的现代计算机科学课程这个资源有点不合惯例,它引荐了一种愈加数学的方法来学习计算机科学,要点关注离散数学、函数式编程、软件验证、证明、类型论和复杂性理论等主题。
请记住,高质量的计算机科学学位往往十分谨慎和苛刻。假如您有爱好走这条路,您或许需要几年时间和大量的努力才干通过自学取得类似水平的教育。