一种语言统治一切

隐藏在一层代码中的语言使渴望学习的语言gui折。



在撰写本文时,“编程最先学习哪种语言”查询产生了5.17亿个搜索结果。 这些网站中的每一个都会赞美一种特定的语言,其中90%最终会推荐Python或JavaScript。


无需长篇大论,我要正式宣布所有这5.17亿个站点都是错误的,并声明首先需要研究的语言是基本逻辑


仅仅知道如何编码还不够。 市场上充斥着各种机构和课程的毕业生,大三的职位几乎不复存在*。 要在当今世界取得成功,您必须既编码又要具有先进的基本逻辑思维。


*以下,请记住,这是翻译,作者和您所在国家/地区的劳动力市场情况可能有所不同(就像其他细微差别一样),但是,这本身并不会使原始文章变得更糟-大约25%。 佩雷夫


我的第一门计算机科学课


我第一次接触计算机科学是选修课,当时我读10年级。 在进入观众的第一天,我很高兴看到眼前有大量的冰淇淋桶和各种浇头。 大家坐下后,老师宣告:


“今天,我们将品尝自制的冰淇淋。 但是有一个条件:您必须列出有关如何准备甜点的具体说明,我将按照它们进行操作。”


没问题,我认为,这一课不会太长。 大约一分钟后,我为梦中的冰淇淋绘制了一个很棒的食谱:


  1. 起并将三个球的覆盆子冰淇淋放在碗中
  2. 打开巧克力酱,在同一个碗中加入两汤匙。
  3. 将鲜奶油加入碗中
  4. 撒上全部糖棒,然后将樱桃放在上面

我的老师,在这个很好的比喻中的“计算机”,比我以前见过的表现更讽刺。 她开始狂热地用勺子戳一桶冰淇淋,甚至不碰盖子。


“很好,很好,但是首先需要打开它!” -我大叫,试图尽快请客。


“您没有在说明中写这个,但是我不能为您做冰淇淋。 下一个!”


我们跳过尝试2之前的时间


  1. 卸下盖子,打开覆盆子冰淇淋。
  2. 起并将三个球的覆盆子冰淇淋放在碗中
  3. 打开巧克力酱,在同一个碗中加入两汤匙。
  4. 将鲜奶油加入碗中
  5. 撒上全部糖棒,然后在上面撒樱桃

好吧,现在可以确定没有问题。 为了以防万一,我确保制作我的烹饪杰作的所有成分都是开放的。


老师取下盖子,sc起身,将三个冰淇淋球放在一个碗里。 “最后,我美丽的冰淇淋开始体现在现实中!” 然后她打开巧克力酱,在碗里加了两汤匙。 您没有“从两汤匙中加入巧克力酱”-您没有想到-她当然将勺子自己放在碗里。 他们没有酱。 再说一次,我不必费心画所有的东西。 用相同的精神完成其余的工作后,我得到了一个装有冰淇淋和两汤匙的碗,在鲜奶油的海底下几乎看不到。 上面放着一对糖棒。


似乎此刻我终于意识到:计算机是处于真空状态的逻辑。 他不了解周围的环境,也没有做任何假设。 他仅遵循明确制定的说明,并逐字逐句地遵循。


我的最终结果是经过一系列漫长但必要的反复试验的结果:


  1. 打开(如果尚未完成)以下每个包装:覆盆子冰淇淋,巧克力酱,生奶油,糖棒。
  2. 拿出碗放在你面前
  3. 取一勺冰淇淋,然后将三个球的覆盆子冰淇淋一碗装进碗里。 将冰淇淋勺放到位。
  4. 取一罐巧克力酱,捞起酱油,然后将一汤匙的内容物倒入碗中。 重复上述步骤,再将酱汁倒一遍。 将汤匙和罐子放到位。
  5. 取下包装的奶油并将其翻转过来,将其保持在碗上方,将冰淇淋倒在其上3秒钟,然后将包装返回原位。
  6. 取一罐糖棒,将约四十根糖棒撒入碗中,并将其放在适当的位置。
  7. 从一碗樱桃中取出一颗樱桃,然后将其放在冰淇淋上。
  8. 给学生一碗准备好的冰淇淋和勺子。

最后一点尤为重要,因为没有倒数第二个时间,老师只是开始吃我的冰淇淋。


但这是编程。 着重为计算机创建一套完整的说明。 本质上,这就是每种编程语言都可以归结为-编写指令。




职业生涯规划


编程已经到了很难将其作为一个单独的行业来讨论的地步,就像很难用一个单词“程序员”作为工作描述一样。 市场可能会平等地要求两个开发人员,他们会使用完全不同的语言,这意味着开发能力比特定语言的知识更为重要。 对于所有成功的开发人员来说,通用属性是基本逻辑


最好的程序员能够从新的角度看代码。 这从根本上来说很重要,因为大多数软件产品都是未记录的不良代码段的集合。 他们需要不断地团结起来,根据需要缩小差距。 不能将分散的点连接在一条直线上的人将永远处于局外状态。


所有这些使我想到了另一个声明,这一次是一个黑体字: 基础知识一直并且将对程序员至关重要


语言来来去去。 框架已经过时,公司通过更改所使用的技术堆栈来响应需求。 有没有永远不会改变的东西? 是的-基础知识,这就是为什么它被称为基础知识,它构成了一切的基础!




如何提高基础知识


Christopher YeshkeUnsplash上的照片

如果您正在寻找改善基本逻辑思维的起点,请尝试从此处开始:


了解程序的复杂性


也称为Big O, “算法复杂度”是指执行程序所花费的时间与其输入数据(n)的大小有关。 紧跟所使用的算法是重要的一步。


了解您的数据结构


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


人们来找我采访,他们声称按数组搜索比按哈希表搜索要快。 这是最确定的信号,您不应雇用他们-了解您的数据结构。


阅读/观看/听


UdemyPluralsightCodeAcademy之类的网站是学习新编程语言的绝佳选择。 但要了解基础知识,请查看有关一般原理,实践和编码风格的书籍。 最推荐的书籍是《设计模式,重构》。 改进现有代码“,完美代码”,“简洁代码”和“程序员实用主义者”。 最后,每个开发人员都必须保留“ 算法 ”的副本。


练习!


您将无法煮鸡蛋而不破鸡蛋。 诸如HackerRankCodeWarsCoderByteTopCoderLeetCode之类的网站提供了数千项有趣的任务,以测试您对数据结构和算法的了解。 尝试解决您喜欢的问题的运气,将您的版本发布在Github上,然后查看其他人是如何做到的。 这将我们带到了最后一点:


阅读别人的代码


只能遵循开发路径才能犯的最大错误就是独自走这条路。 软件开发主要是团队合作。 我们在一起创造标准,一起犯错误,尽管有很多失败,但我们一起变得更好。 花在阅读别人的代码上的时间会很丰厚。 只要确保这是好的代码即可。




好吧,我能提供的最佳建议永远不要为您尚不了解而感到羞耻。 如前所述,我们的行业是巨大的,技术的数量是巨大的。 建立一个整体的画面需要花费大量的时间和精力,要成为特定领域的专业人士还需要花费更多的时间和精力,并且要提高您所在领域的技能。 当我自己实现此目标时,我会告诉您。

Source: https://habr.com/ru/post/zh-CN456342/


All Articles