编程语言王国的唯一王者

德昂
• 阅读 1764

编程语言王国的唯一王者

编程语言王国的唯一王者

在撰写本文前,我搜索了“我应该学习哪种编程语言”这个词条,发现会产生5.17亿个结果。而每个页面都在滔滔不绝地介绍某种语言相对于其他语言的优势,其中90%会推荐Python或JavaScript。

恕我直言,我并不认同这5.17亿个搜索结果,并建议你最应该学习的第一种编程语言——逻辑。

知道如何编写代码已经不再是一种优势了。市场上充斥着各种培训机构、学习班培训出来的人员,“初级软件开发人员”的职位已经不复存在。要想在今天的市场上取得成功,你不但需要知道如何编码,并且还需要学会运用逻辑思维模式。

1.我的第一节计算机科学课

我第一次接触“计算机科学”是在我十年级的选修课。上课第一天,我欣喜地看到我面前有各种各样的冰淇淋和各种圣代配料。在我们都坐下之后,我的老师宣布:

“今天,我们要制作圣代。有一个条件:你必须写一份关于如何准备圣代的具体说明,然后我就会照着做。”

当然没问题,我想,这简直是一件轻而易举的事儿。然后在不到一分钟的时间里,我就草草记下了一套“完美”的圣代制作指南:

编程语言王国的唯一王者

然后,我的“老师”(嗯,我愿意用这个可爱的比喻称呼我电脑)做出了我所见过的最准确的讽刺表演——她开始恶狠狠地戳冰淇淋盒盖,但无法穿透它坚硬的外表。

“好吧,首先取下盖子,”我说,仿佛急切地想要享受一顿美食。

“你没有向我提供那些指示,所以,很不幸,没能给你做一个圣代,下一个!”

2.快进到#2号尝试

编程语言王国的唯一王者

这次我确信我有打开盒盖这个条件了。我甚至在添加每个项目到我的杰作前,就已经确保它们都被打开了。

她打开盖子,舀了三勺黑莓冰淇淋,把它们放进碗里。从这一步看,起码我的新生圣代开始诞生了。

紧接着,她打开热巧克力,把两个汤匙放入我的碗里。不是两汤匙的热巧克力,请注意——是两个现实中的汤匙,没有热巧克力。

看起来我又一次没做到给予足够具体的指令!

当全部都完成之后,我得到了一碗冰淇淋,上面放着两个金属勺子、一坨鲜奶油和大约300片糖屑。

到这个时候,我终于明白了:计算机是一个纯粹的逻辑实体。它没有上下文,也没有假设。它对一组非常具体的指令做出响应,并最终在Terminal中运行

我最终制定的冗长却必要的圣代制作指南:

编程语言王国的唯一王者

最后一个步骤非常重要,因为如果没有这个步骤她将会开始吃掉我的圣代。

这就是计算机编程的现实情景。请为计算机提供密集的详细指令集。本质上来说,这就是所有编程语言分解成的指令。

3.软件开发职业道路

软件开发现在已经到了不能作为一个单独的行业来讨论的地步,就像“软件开发人员”这个职位名称太宽泛一样。两名开发人员在拥有不连贯的技能集的情况下可以看作是具有相同市场竞争力,这意味着在开发中,职业生涯不仅仅是取决于编码的能力。熟练的开发人员拥有一种与编程无关的通用属性——逻辑。

最好的开发者是批判性思维的专家。这是至关重要的,因为大多数软件项目都是没有文档记录的、支离破碎的灾难。它们需要一个批判性的思考者来拼凑信息,并在需要的时候填补空白。落后的开发者是那些不能将这些点连接起来的开发人员。

所有这一切都归结于另一个大胆的声明: 计算机科学的基本原理对于编码能力是至关重要的,而且将永远是至关重要的。

流行语言随潮流而变化。框架变得过时,企业通过混合技术来应对不断变化的需求。唯一不变的是什么?基本原理——这就是他们的定义!

4.如何提高逻辑思维

对于那些无法深入思考的人来说,请考虑使用这些工具来提高您的编程批判性思维:

了解您的运行时间复杂度

程序的运行时间复杂度也称为Big-O ,可以表示为在任何实例上执行的与输入大小(n)相关的步骤的数量。首先,请始终监视您的程序的运行时间。

了解您的数据结构

数据结构是每个复杂程序的核心。知道在什么场景中使用哪种结构本身就是一门艺术。数据结构与运行时间复杂度直接相关,因为选择错误的结构会使程序陷入停顿。数组查找是 O(n) ,这意味着随着输入的大小增加,使用数组的开销也会增加。散列查找O(1),因此无论所述散列中的键数是多少,散列键的查找时间都将是恒定的。

我曾经有一些候选人认为数组的搜索时间比散列更快。这就是一个警告我不要雇佣他们的直接信号——因此,请了解你的数据结构。

读/看/听

像Udemy,Pluralsight和CodeAcademy等网站是学习一门新的编程语言的绝佳资源。要了解基础知识,请参阅有关通用工程概念、最佳实践和编码风格的书籍。工程师们最强烈推荐的书籍是《Design Patterns》,《Refactoring, Code Complete, Clean Code》, 和 《The Pragmatic Programmer》等。最后,每个工程师都应该在他们的办公桌上保留一份《Introduction to Algorithms》,并妥善保存。

实践!

不曾疯狂练习拉小提琴,就不可能成为一名小提琴大师。像HackerRank,CodeWars,CoderByte,TopCoder和LeetCode这样的网站上有成千上万个挑战问题,旨在测试您对数据结构和算法的了解。我发现使用这些网站的最佳方法是自己尝试解决问题,并将解决方案放在Github上,然后查看该问题的顶级解决方案,看看其他人是如何解决的。这就引出了我的最后一点建议:

查看其他人的代码

在软件开发过程中,您可能犯的最大错误就是单独行动。软件开发在很大程度上是一项众包工作。我们一起建立标准,一起犯错误,并随着时间的推移(通过多次失败)来学习什么是有效的。花时间阅读熟练的开发人员的代码总是有回报的。只要确保它是好的代码。


我能给你留下的最好建议就是永远不要为你所知道的事情感到羞耻。正如我所提到的,这个行业规模庞大,有着庞大到可怕的语言,内容密集。需要花费大量的时间和精力来进行理解和学习。获得熟练则需要更多的努力,并且需要花费更多的精力来达到精通。

当我到达那里时,我会告诉你的。


扫码关注京东云开发者社区,每天都有精彩行业信息哦!

欢迎点击“京东云”了解更多精彩

编程语言王国的唯一王者
编程语言王国的唯一王者

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Java修道之路,问鼎巅峰,我辈代码修仙法力齐天
<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
C 语言时隔 5 年重回巅峰,这 20 个热门项目拿去练手!
在上个月的TIOBE编程语言排名中,C语言和Java的差距只有0.01%。在近日TIOBE公布的2020年5月编程语言排行榜中,C语言成功超越了Java,重返第一的王者宝座!!(https://pic1.zhimg.com/v2b0ebb8d95506c0a43900550b0ccc2074_b.jpg)编程语言5
Wesley13 Wesley13
3年前
NEO从源码分析看网络通信
_0x00前言_NEO被称为中国版的Ethereum,支持C和java开发,并且在社区的努力下已经把SDK拓展到了js,python等编程环境,所以进行NEO开发的话是没有太大语言障碍的。比特币在解决拜占庭错误这个问题时除了引入了区块链这个重要的概念之外,还引入了工作量证明(PoW)这个机智的解决方案,通过数学意义上的难题来保证每个
Wesley13 Wesley13
3年前
00_设计模式之语言选择
设计模式之语言选择设计模式简介背景设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
曹训 曹训
11个月前
2:Python字符串与数字
字符串(引号):只有四种情况如下name"我是编程高手"name'我是编程高手'name"""我是编程高手"""name'''我是编程高手'''加法:n1"alex"n2"sb"n3"df"n4n1n2n3print(n4)"alexsbdf"乘法:n