一种语言统治一切

隐藏在一层代码之下的是一种日渐衰弱的语言,渴望被学习。

一种语言统治一切

截至撰写本文时,查询“首先学习编程哪种语言”返回 517 亿条搜索结果。 这些网站中的每一个都会赞扬一种特定的语言,其中 90% 最终会推荐 Python 或 JavaScript。

言归正传,我想郑重声明,这 517 亿个网站都是错误的,你应该首先学习的语言是 基本逻辑.

仅仅知道如何编码是不够的。 市场上的机构和课程毕业生已经饱和,初级职位实际上已经不复存在*。 要在当今世界取得成功,您必须同时具备编码能力和先进的基本逻辑思维。

*在下文中,请记住,这是翻译,作者和您所在国家的劳动力市场情况可能有所不同(以及其他细微差别),但这本身并不会使原始文章变得更糟 -约。 翻译

我的第一堂计算机科学课

我第一次接触计算机科学是在十年级时选修的。 第一天,走进教室,我很高兴地看到面前摆着一大桶冰淇淋和各种配料。 等大家就座后,老师宣布:

“今天我们要尝尝自制的冰淇淋。 但有一个条件:你必须列出一份如何准备甜点的具体说明,我会遵循它们。”

“没问题,”我想,“这节课不会太长。” 大约一分钟之内,我就写下了我梦想中的冰淇淋的完美配方:

  1. 舀三勺覆盆子冰淇淋放入碗中
  2. 打开巧克力酱,将两汤匙添加到同一个碗中
  3. 将淡奶油加入碗中
  4. 撒上糖棒,然后在上面放一颗樱桃

我的老师——这个可爱的比喻中的“计算机”——进行了比我以前见过的更具讽刺性、更真实的表演。 她开始用勺子热心地戳冰淇淋桶,甚至没有碰到桶盖。

“好吧,好吧,但首先你得打开它!” - 我惊呼道,试图尽快拿到这份礼物。

“你在说明书上没有写这个,我不能给你做冰淇淋。 下一个!”

让我们快进到尝试#2

  1. 取下盖子打开覆盆子冰淇淋
  2. 舀三勺覆盆子冰淇淋放入碗中
  3. 打开巧克力酱,将两汤匙添加到同一个碗中
  4. 将淡奶油加入碗中
  5. 撒上糖棒,然后在上面放一颗樱桃

嗯,现在应该不会有什么问题了。 为了以防万一,我确保制作我的烹饪杰作的所有原料都是开放的。

老师打开盖子,舀出三勺冰淇淋放入碗中。 “终于,我美丽的冰淇淋开始实现了!” 然后她打开巧克力酱,在碗里加入两汤匙。 她没有“用两汤匙添加巧克力酱”——不这么认为——当然,她把汤匙本身放进了碗里。 它们里面没有酱汁。 再说一次,我没有费心把所有的事情都写下来。 以同样的精神完成其余的工作后,我收到了一碗冰淇淋和两汤匙,在鲜奶油的海洋下几乎不被注意到。 上面放着一对糖棒。

似乎这一刻我终于明白了:计算机是真空中的逻辑。 他不了解周围的情况,也不做任何假设。 他只执行明确制定的指示并逐字遵循。

我的最终结果是经过一系列长期但必要的试验和错误的结果:

  1. 如果您还没有这样做,请打开以下每个包装:覆盆子冰淇淋、巧克力酱、生奶油、糖棒。
  2. 拿出一个碗放在你面前
  3. 取一个冰淇淋勺,将三勺覆盆子冰淇淋一一放入碗中。 将冰淇淋勺放回原位。
  4. 取一罐巧克力酱,舀出酱汁,然后将一汤匙的内容物倒入碗中。 再重复一次舀和倒的过程。 将勺子和罐子放回原位。
  5. 将鲜奶油包装倒置,将其放在碗上,倒在冰淇淋上 3 秒钟,然后将包装放回原处。
  6. 拿一罐糖棒,将大约四十根糖棒倒入碗中,然后将罐子放回原处。
  7. 从樱桃碗中取出一颗樱桃,将其放在冰淇淋上。
  8. 给学生一个装有成品冰淇淋的碗和一个勺子。

最后一点尤其重要,因为如果没有它,老师倒数第二次就开始吃我的冰淇淋。

但这就是编程。 为计算机创建一套仔细的指令的压力。 本质上,这就是每种编程语言的归结:编写指令。

编程职业

编程已经到了很难作为一个行业来讨论的地步,就像很难用“程序员”这个词来描述工作一样。 两个开发人员可以同样受到市场的需求,了解完全不同的语言,这意味着开发能力比了解特定语言更重要。 所有成功开发人员共有的一个普遍属性是 基本逻辑.

最好的程序员是能够从新角度看待代码的人。 这一点非常重要,因为大多数软件产品都是未记录的不良代码片段的集合。 他们需要不断地聚集在一起,并根据需要填补空白。 那些无法用一条线将不同点连接起来的人将不得不永远处于观望状态。

所有这些让我想到了另一个声明,这次是粗体的: 基础知识对于程序员来说一直是并且将会是最重要的.

语言来来去去。 框架正在变得过时,公司正在通过改变他们使用的技术堆栈来响应需求。 有没有一件事是永远不会改变的? 是的——基础知识,之所以称为基础知识,是因为它是一切事物的基础!

如何提高基础知识

一种语言统治一切克里斯托弗摄 耶施克 上 Unsplash

如果您正在寻找提高基本逻辑思维的起点,请尝试从这里开始:

了解程序的复杂性

也叫 大O. “算法复杂度”是指执行程序所需的时间对其输入数据大小的依赖性 (n)的。 密切关注正在使用的算法的脉搏是重要的一步。

了解您的数据结构

数据结构是每个现代程序的核心。 知道在哪种情况下使用哪种结构本身就是一门学科。 数据结构与运行时复杂性直接相关,选择错误的结构可能会导致根本的性能问题。 查找数组中的元素是 O(N),这表明使用数组作为输入数据的成本很高。 哈希表查找 - O(1),这意味着在这种情况下搜索值的时间不取决于元素的数量。

人们来找我接受采访,并声称通过数组搜索比通过哈希表搜索更快。 这是最明确的迹象,表明您不应该雇用他们 - 了解您的数据结构。

读/看/听

像这样的网站 UdemyPluralsight и CodeAcademy - 学习新编程语言的绝佳选择。 但对于基础知识,请参阅有关一般编码原则、实践和风格的书籍。 最推荐的书籍是《设计模式》、《重构》。 改进现有代码”、“完美代码”、“干净代码”和“实用主义程序员”。 最后,每个开发人员都应该保留一份“算法“ 在眼前。

实践!

不打破鸡蛋就无法煮炒鸡蛋。 类似的网站 HackerRank代码战编码字节, 顶级编码器 и 力码 提供数千个有趣的谜题来测试您对数据结构和算法的了解。 试试你的运气来解决你喜欢的问题,将你的解决方案发布到 Github 上,然后看看其他人是如何解决它的。 这引出了最后一点:

阅读别人的代码

在发展道路上,你可能犯的最大错误就是单打独斗。 软件开发很大程度上是团队的努力。 我们一起制定标准,一起犯错误,尽管失败,但我们一起变得更好。 花时间阅读别人的代码将会得到丰厚的回报。 只要确保它是好的代码即可。

好吧,我能给出的最好建议就是永远不要因为自己还不知道某件事而感到羞耻。 正如已经说过的,我们的产业规模巨大,技术量无穷无尽。 建立一个整体图景需要花费大量的时间和精力,成为某个特定领域的专业人士更需要花费大量的时间和精力,而磨练自己所在领域的技能则需要花费更多的时间和精力。 当我自己实现这个目标时,我会让你知道。

来源: habr.com

添加评论