几乎每周都有朋友或熟人问我,我想学习编程;我应该从哪种语言开始?或多或少,我每两周都会在LinkedIn上收到一个消息,内容是我的儿子应该开始编程,什么是最适合他的语言?
不仅仅是那些从来没有编写过代码的人,我也经常从那些有几年编码经验的人那里收到这些信息。我这么说不是为了抱怨。我靠在Medium上探究不同编程语言、框架和人工智能模型的利弊而谋生。我从人们的这些问题中获益匪浅。这些问题是很直观的。毕竟,每个人都想用最好的工具工作,并尽可能快地建立自己的软件技能。当你观察到每个开发者似乎都在使用不同的技术栈时,想知道哪一个才是正确的就很有意义了。问题是,这一切都取决于手头的问题。没有任何技术本身是好的或坏的;它只是取决于你想解决什么类型的问题。说到底,编程就是:通过使用计算机来解决问题。因此,对于那些想开始编程或提高他们在软件开发或数据科学方面的技能的人来说,问题不应该是我应该使用什么,Python还是Julia?问题应该是我如何才能更好地解决软件问题?
我不是一个职业的计算机科学家。我是一个物理学家,碰巧使用了编程和数据科学的概念,因为我处理了来自粒子对撞机的大量数据。也就是说,物理学家和计算机科学家一样,都是很受欢迎的。这不是因为他们对中微子或黑洞的了解,而是因为他们解决问题的能力。亚伯拉罕-林肯曾说过,给我六个小时去砍一棵树,我会花前四个小时去磨斧头。
对于程序员和数据科学家来说,这意味着在开始编码之前,要花时间了解问题并找到高层次的解决方案。在一般的编码面试中,候选人要花不到一半的时间来实际写代码,剩下的时间是理解问题。
1了解问题
不要跳过这一步,永远不要! 你是否理解一个问题的关键是你是否能向不熟悉这个问题的人解释它。试着用简单的英语或你的母语写下来;画一个小图;或告诉朋友这个问题。如果你的朋友不明白你在说什么,你需要回到问题陈述。
要问的关键问题是,输入是什么?希望的输出是什么?例如,输入可能是一个数据阵列,而输出可能是数据的线性回归。哪些假设是问题的基础?例如,你可能假设你的数据中(几乎)没有测量误差。是什么让这个问题变得复杂?例如,你拥有的数据可能是不完整的,或者数据集太小,无法得出明确的结论。
2将问题分解
每个大问题都是由很多小问题组成的。鉴于我们之前的线性回归的例子,你可能想考虑以下子问题。清理数据,找出数据中哪些变量对回归有意义,哪些变量可以安全地忽略不计;寻找合适的工具来进行回归(这就是关于编程语言和框架的老问题的地方);评估你的结果和检查错误,将问题分解,有助于你为你的工作制定一个适当的计划。
这也会使你更有动力,因为你会在这一路上实现小却重要的里程碑。这比坐在成堆的工作前,感觉自己没有前进的动力要令人满意得多。
从一个例子开始
魔鬼总是在细节中。与其从整个项目开始,不如从它的一小块开始。试试你的计划是否可行,或者你是否因为不可预见的困难而不得不调整它。这有助于你掌握困难部分的情况。许多问题听起来很简单,但当你开始构建它们时,会有一个又一个的路障。
在我们的例子中,人们可以先对几个变量进行线性回归,而不是使用所有相关变量。这不会给你的项目完成度加分;然而,当你还在处理少量的数据时,发现你的脚本中的错误可能会救命。当你把所有的数据都扔到机器上,运行了几个小时,然后回来发现脚本在中途挂掉了,你会非常沮丧的。相信我,这种情况经常发生。先进行小规模的测试,确保你的解决方案能按照你的设想工作。
执行
这是最重要的部分。现在你可以为你的大问题建立解决方案了。把你所有的数据扔到代码里。运行一个漂亮的模型,做任何你想做的事。在完成了前面的三个步骤之后,这应该可以很顺利地运行了。如果有错误,你可能要回到第1-3步,看看你是否已经理解了所有的东西,没有忽略任何错误。
反思
仅仅因为你找到了一个解决方案,并不意味着你找到了最好的解决方案。不要跑去叫停;想想如何优化你的解决方案,以及如何以不同的方式来解决这个问题。你可能想与你的同事交流,问问他们会如何解决这个问题。他们的方法是否与你不同?你也可以试着找出你的解决方案中最大的瓶颈,也就是说,那些需要花费最多时间和资源来执行的部分。你可以如何改进它们?最后,思考一下你的解决方案在未来可能会如何发展。新的软件框架或人工智能的使用会使你的解决方案更好吗?你的解决方案如何能够为解决其他更复杂的问题作出贡献?
人们,包括我自己,倾向于沉迷于不同的编程语言和最新的框架,这可能会使一切效率提高1000倍。值得提醒的是,这还不到成为一名优秀程序员的一半。另一半是解决问题。你不可能在一夜之间获得解决问题的技能。但是,如果你运用这些步骤,提出正确的问题,并经常这样做,你就会走上将你的职业生涯从优秀带到卓越的正确道路。
以上就是“ 忘掉算法和模型吧!先学会如何解决问题”的详细内容,想要了解更多IT圈内资讯欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/10241/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取