如何才能一统编程语言的江湖?

作者 | 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 ,和面试官扯皮就没问题了
☞密码学应用的四个进化阶段 | 博文精选
点分享点点赞点在看

极简JAVA学习营第五期(报名以后加助教微信:eduxy-1)

01-19
想学好JAVA必须要报两万的培训班吗? 【课程背景】 JAVA是市场份额最大的编程语言,每天各大招聘网站上都会有数万个JAVA开发工程师的在招岗位,但是JAVA的技术体系庞大复杂,要想扎实掌握JAVA不是一件容易的事,线上学习相比线下两万起的高昂费用便宜了很多,而且具备学习时间灵活的优势,但是线上学习的劣势也很明显,没有线下那种学习氛围,碰到问题没法解决,在家学习很容易偷懒,极简JAVA学习营充分考虑到这些问题,通过每日实战编程练习,分队pk,助教答疑,作业点评,作业讲解,项目答辩等诸多环节充分激发你的学习热情,解决你学习中碰到的问题,让你花十分之一的钱学到JAVA的精髓,开启你的人生逆袭之路。 【专项的贴心服务】 1. 学练结合:定期布置视频任务和编程实战练习:通过每天的视频任务统一大家的进度,以便同学更好的交流,针对每天的任务会有相应的编程实战练习,通过练习内化知识。 2. 分队PK:将就业营的同学分成几队,通过作业统计表统计每队提交作业情况进行PK,激发你的学习动力。 3. 助教讲师答疑:碰到任何问题,发到群里,助教和讲师十分钟内帮你解决问题,扫清学习中的障碍。 4. 助教点评讲解作业:你每天提交作业都会有助教进行点评,让你知道有什么问题怎么解决,每三天一次视频讲解作业,互动解答问题 5. 项目答辩:每个阶段学完会有项目答辩,通过做项目巩固前一阶段的知识点,锻炼编码能力。 【往期训练营学习展示】 【套餐内容简介】 本套课以市场就业和职位需求为核心,从JAVA入门到多领域实战,设计出学习路线,共分为二十大模块,分别是:JAVA面向对象、Object类与常用API、集合框架、IO流、反射注解、多线程与网络编程、Object类与常用API等等。 同时采用理论讲解加实战演练的方式,既能让学员听懂听明白达到理解透彻,又能够在一个个真实实战案例中,让学员掌握真正有用的开发技能,从而进阶 JAVA 工程师! 套餐中一共包含21门JAVA程,助你从零进阶JAVA工程师! 阶段一:JAVA基础 课程1:《极简JAVA学习营开营篇》 课程2:《极简JAVA:JAVA面向对象》 课程3:《极简JAVA:Object类与常用API》 课程4:《极简JAVA:集合框架》 课程5:《极简JAVA:IO流》 课程6:《极简JAVA:反射注解》 课程7:《极简JAVA:多线程与网络编程》 阶段二:数据库入门 课程8:《极简JAVA:MySql数据库》 课程9:《极简JAVA:JDBC与连接池》 阶段三:JAVA WEB 课程10:《极简JAVA:HTML5与CSS3》 课程11:《极简JAVA:极简JAVA十一:Javascript与Jquery》 课程12:《极简JAVA:BootStrap》 课程13:《极简JAVA:JAVA Web》 阶段四:框架实战 课程14:《极简JAVA:Mavean入门》 课程15:《极简JAVA:MyBatis框架》 课程16:《极简JAVA:Spring框架》 课程17:《极简JAVA:Spring Mvc》 课程18:《极简JAVA:Oracle数据库》 课程19:《极简JAVA:Git入门》 课程20:《极简JAVA:Linux入门》 课程21:《极简JAVA:SpringBoot》 【课程特色】 1、易理解:讲师思路清晰、节奏明确、从易到难讲解透彻明白; 2、知识全:知识全面系统,从JAVA入门到实战,由易到难,让你彻底掌握JAVA开发; 3、重实战:涵盖大量实战项目,锻炼你的动手实操能力,面向工作编程; 【面向人群】 1、在校计算机专业或者对软件编程感兴趣的学生; 2、零基础想学JAVA却不知道从何入手 3、囊中羞涩,面对两万起的JAVA培训班不忍直视 4、在职没有每天大块的时间专门学习JAVA 这么细致的服务,这么好的氛围,这样的学习效果,你还等什么?赶紧报名吧,抓紧抢位,本期只招100人,错过只有等时间待定的下一期了
©️2020 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值