如何才能一统编程语言的江湖? |
珠江路在线
2020年7月17日
【
转载
】CSDN 编辑:
|
|
作者 | 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 翻译,转载请注明 起源出处 。