作者 | Eric Girouard

译者 | 弯月,责编 | 屠敏

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

以下为译文:

在撰写本文的时候,我搜索了一下:“我应该学习哪种编程语言”,结果得到了5.17亿个搜索结果。每个结果都介绍了某种语言战胜其他语言的优势,其中90%的结果最终都推荐了Python或JavaScript。

可能我有点太大胆了,我不太赞同这5.17亿个结果,我建议你应该学习的第一门编程语言是逻辑。

如今只知道如何编程已经行不通了。市场已经被速成班渗透,“初级软件开发人员”的职位已经消失殆尽。今时今日为了取得成功,你不仅需要知道如何编程,还需要建立逻辑思维。

我的第一门计算机科学课程

我第一次接触计算机科学是10年级的一门选修课。上课的第一天,我的眼前摆满了各式各样的冰淇淋和制作圣代的原料。大家坐好以后,老师宣布说:

“今天,我们来制作圣代。首先你需要编写一份有关如何制作圣代的具体说明,然后由我根据你的说明来制作。”

我心想,没问题,这很简单啊。不到一分钟的时间,我就写下了一份完美的圣代制作说明:

盛三勺黑树莓冰淇淋放到碗里;

放两勺热巧克力到碗里;

放鲜奶油到碗里;

在圣代上撒上少许彩色糖粒和一颗樱桃。

然后,我的老师(这台可爱的模拟计算机)就上演了一幕准确无误又充满讽刺的表演。她开始狠狠地扎冰淇淋的盒子,由于盖子还没有打开,所以她根本无法穿透盒子坚硬的外表。

“好吧,先取下盖子。”我迫不及待地想吃冰激凌。

“但你的说明里没有提到这些,因此,很遗憾,我没办法为你制作圣代,下一位!”

第二次尝试

取下盖子,打开黑树莓冰淇淋;

盛三勺黑树莓冰淇淋放到碗里;

打开热巧克力,然后放两勺到碗里;

打开鲜奶油,然后放一些到碗里;

在圣代上撒上少许彩色糖粒和一颗樱桃。

这次我确定我的说明没问题。在放到圣代上之前,我提前检查了一下每样东西是否都打开了。

于是,我的老师打开盖子,盛了三勺冰淇淋放到了碗里。终于,我的圣代就要做好了。然后,她打开热巧克力,放了两个勺子到我的碗里。请注意,不是两勺热巧克力,而是两个勺子,根本没放热巧克力。我说的还是不够具体。最后,老师按照我说的全部做完了,我拿到了一碗冰淇淋,两把金属汤匙,一个鲜奶油罐,还有大约300个彩色糖粒。

我想说到这里大家都明白了,计算机是一个纯粹的逻辑实体。它没有上下文,也没有任何假设。它会严格遵循一组非常具体的指令。

最后我的圣代制作说明是一场非常繁琐但很有必要的灾难:

如果下列各项尚未打开,则请打开:黑莓冰淇淋、热巧克力、彩色糖粒和鲜奶油;

从一摞碗中拿一个,然后放到你面前;

拿起冰淇淋勺,盛三勺黑树莓冰淇淋放入碗中,一次放一勺。完成后请放下勺子;

如果还没有加热巧克力,则请拿一个盛热巧克力的勺子,然后盛两勺巧克力放入碗中,一次放一勺。完成后请放下热巧克力;

将鲜奶油倒过来,用手指按住喷嘴在碗上方喷3秒钟,然后把瓶子放回原位;

在碗上洒约40颗彩色糖粒,完成后将瓶子放回原位;

从樱桃罐中取出一颗樱桃,然后小心地放在圣代上面;

将圣代和一把勺子一起交给学生。

最后一项非常重要,因为如果没有这句话,老师就会吃掉我的圣代。

这就是真实的计算机编程。你需要向计算机提供大量详细的指令集。从本质上讲,所有编程语言都会分解成指令。

软件开发职业发展

如今软件开发这个职位的范围非常广泛,可以作为一个单独的行业来探讨,而“软件开发人员”也是一个过于宽泛的职位头衔。两名在市场上同样枪手的开发人员拥有的技能可能完全不同,这表明开发工作不仅仅是单纯的编程能力。除了编程以外,熟练的开发人员还有一个通用的属性:逻辑。

优秀的开发人员都是批判性思维方面的专家。这一点至关重要,因为大多数软件项目都没有文档,七零八碎,简直就是灾难。这样的项目需要拥有批判性思维的开发人员将信息拼凑起来,并在需要时填补空白。凡是无法将所有线索联系到一起的人都会落伍。

因此,我可以得出另一个大胆的声明:计算机科学的基础知识对编程能力至关重要,而且永远如此。

流行的编程语言起起落落。很多框架都过时了,各个公司都希望通过混合技术栈来应对不断变化的需求。什么才是一成不变的东西?基本原理!

如何改善逻辑思维

对于那些无法深入思考的人,请考虑使用以下工具来提高批判性思维:

了解运行时的复杂性

程序的运行时复杂度又称大O(Big O),可以表示为相对于输入大小(n)执行的步骤数。永远把关注点放在运行时间上,这是学习编程的第一步。

了解数据结构

数据结构是每个复杂程序的核心。掌握在什么情况下使用哪种结构本身就是一门艺术。数据结构直接关系到运行的时间复杂度,因为选择错误的结构会导致程序停滞不前。搜索数组中的某个值的复杂度为O(n),也就是说随着输入大小的增加,使用数组的代价也会提高。哈希查找的复杂度为O(1),因此哈希密钥的查找时间将是恒定的,与哈希中密钥的数量无关。

我曾经面试过一个候选人,他坚持认为数组的搜索时间比哈希表要快。这种人在招聘时就不要考虑了。

多读/多看/多听

Udemy,Pluralsight和Codecademy等网站为学习新编程语言提供了优秀的资源。为了学习基础知识,你需要阅读软件工程通用概念、最佳实践以及编程风格之类的书籍。工程师首推的书包括《设计模式》、《重构》、《代码大全》、《代码整洁之道》以及《程序员修炼之道》等。最后,每个工程师都应在自己的办公桌上放一边《算法导论》。

实践!

不经过千锤百炼就不可能成为小提琴大师。HackerRank、CodeWars、CoderByte、TopCoder和LeetCode等网站提供了成千上万道编程考题,旨在测试你对数据结构和算法的掌握程度。我发现这些网站的最佳利用方法是动手解决问题,将解决方案上传到Github上,然后再看看最佳解决方案,以了解其他人如何解决该问题。因此,引出我的最后一点:

多读其他人的代码

在从事软件开发的过程中,你可能犯的最大错误就是独来独往。软件开发是需要集体的努力。我们一起建立标准,一起犯错误,并随着时间的流逝学习有效的方法(从大量失败中吸取教训)。花时间阅读其他开发人员的代码,会让你受益良多。

我可以给你的最好建议是,不要为自己的无知而感到羞愧。这个行业规模巨大,语言数量众多,内容密集。学好编程需要大量的时间和精力,而熟练掌握编程所需的时间则更多。

原文:https://medium.com/better-programming/the-one-programming-language-to-rule-them-all-620366df2805

本文为 CSDN 翻译,转载请注明来源出处。

更多精彩推荐
☞Python 编程语言的核心是什么?
☞英伟达 VS. 英特尔:后浪来袭!
☞B 站 Up 主自制秃头生成器,独秃头不如众秃头?
☞干货!仅有 100k 参数的高效显著性检测方法
☞看完这篇 HashMap ,和面试官扯皮就没问题了
☞密码学应用的四个进化阶段 | 博文精选
点分享点点赞点在看

如何才能一统编程语言的江湖?相关推荐

  1. 左牵Uber右联大众,黄教主带领320家车企一统自动驾驶江湖

    本文由 「AI前线」原创,原文链接:左牵Uber右联大众,黄教主带领320家车企一统自动驾驶江湖 译者|Vincent,Debra 编辑|Emily AI 前线导读:"美国时间 1 月 7 ...

  2. 一统大数据江湖,趣话图说“存算分离”武学心法

    附:2004-2006年间,Google陆续发表了Google File System.MapReduce和BigTable三篇革命性技术的文章,奠定了分布式系统理论基础.随后以这三项技术为核心的开源 ...

  3. 用计算机语言拜年,鸡年大吉!22种编程语言大拜年

    眼看鸡年就要来了,Win10也得发点跟IT有关的拜年祝福,"鸡年大吉"就不错.那么怎么才能用编程语言来说出这句几年最流行的拜年语呢?下面就看一下22种编程语言如何说"鸡年 ...

  4. 剑网三重置版服务器维护,《剑网3:指尖江湖》新人须知,端游重制版是道伤疤,请勿论...

    剑网3端游我玩了三年,从他的巅峰到现在的"瘦死的骆驼比马大".指尖江湖我从郭炜炜官宣开始制作预约到现在,也不说什么感慨或者抱怨的话,就精简一句,剑网3还是那个剑网3,西山居也还是那 ...

  5. html叫编程语言吗,为什么HTML不是一种编程语言?

    为什么HTML不是一种编程语言?它是一种编程语言.如果它不被认为是一种编程语言,那么这是一个迹象,他们无法理解基本的英语或语义作为一个整体.顺便说一下,我有计算机科学一等荣誉学位.我对语义的基本逻辑也 ...

  6. 【云周刊】第132期:走近40+世界级AI专家!第三届中国人工智能大会资料分享...

    本期头条 [演讲实录+视频]走近40+世界级AI专家!第三届中国人工智能大会资料分享(不断更新) 中国人工智能大会(CCAI),由中国人工智能学会发起,目前已成功举办两届,是中国国内级别最高.规模最大 ...

  7. 以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?...

    作者 / Blockgeeks 编译 / Aholiab 在之前的文章中,营长从特性.规则和应用的角度,向大家全面介绍了以太坊新的合约语言Vyper的内容,很多朋友表示想看Vyper编程的实例. 在今 ...

  8. 年终盘点丨细数2017云栖社区20大热点话题(附100+话题清单)

    2017,你在聚能聊里分享了多少内容?贡献了多少话题?又收获了多少呢?社区聚能聊不仅可以请教技术难题,探讨热点话题,也可以八卦日常生活,分享码农们的点点滴滴. 程序员的世界不止是眼前的代码,一样有诗和 ...

  9. 科大讯飞市值腰斩背后,AI产业集体思考如何落地?

    作者丨郭敏 本文经授权转载自钛媒体(ID:taimeiti) [导语]在过去的一年里,科大讯飞受到了多方质疑,质疑的声音不外乎盈利疲软.靠政府补助.技术优势逐渐变弱等,种种质疑背后,其实整个 AI 产 ...

最新文章

  1. W1000变频器如何设定频率_变频器参数如何设定,参数故障处理办法
  2. lombok 下的@Builder注解用法
  3. hibernate操作mysql中文乱码
  4. 免费当天澳洲运营商全天下载量达1841TB
  5. 多用继承 android,Android温习之路之继承
  6. Warning: Attempt to present on whose view is not in模态跳转问题
  7. linux eclipse安装、新建并运行java程序
  8. 8 个最好的 jQuery 树形 Tree 插件
  9. 组件中使用_尚德高效组件全线投入壳牌首个光伏项目中使用
  10. linux下client命令,Linux系统smbclient命令的使用方法
  11. Linux安装MySQL提示缺少libaio.so.1包问题
  12. 高斯过程回归预测Matlab简单实现
  13. HTML 小型进销库存界面模板
  14. R数据科学-第六章用dplyr处理关系数据
  15. 西门子博途V15.0安装更新包UPD4时遇到版本不一致的提示问题及处理对策
  16. MT6755 datasheet资料,MT6755芯片处理器参数
  17. Spring-配置数据源
  18. <el-upload>组件拖曳无法上传问题
  19. EOJ Monthly 2021.1
  20. org.hibernate.UnknownEntityTypeException: Unable to locate persister: com.mm.constract.domain.Contra

热门文章

  1. Java基础之Maven
  2. MyEclipse生成WAR包并在Tomcat下部署发布[转]
  3. System Explorer 2.0.4.2492 好用的系统管理器
  4. [CMake] 官方文档 和 FAQ
  5. [Linux] 编译 与 链接
  6. [论文阅读] Nearest Neighbor Classifier Embedded Network for Active Learning
  7. 关于卷积神经网络可视化的一点心得
  8. 液晶显示屏怎么显示泰文_上海工业液晶显示屏厂家
  9. leetcode题库3-- 无重复字符的最长子串
  10. 记录——《C Primer Plus (第五版)》第十一章编程练习第四题