如何解决编程语言之间的差异性?从这几点出发!
Athena 2019-11-08 来源 : 阅读 1254 评论 0

摘要:在建立了很多代码以后,在写代码的过程中你会不断遇到让人迷惑的错误。

代码是十分有趣的东西在你有任何想法的时候,都可以编写软件,然后愿望就实现了。

但有时候不是这样的,编程带给人的惊喜只是暂时的,在建立了很多代码以后,在写代码的过程中你会不断遇到让人迷惑的错误。

如何解决编程语言之间的差异性?从这几点出发!


毫无疑问,不同的编程语言间存在着很多差异性,那么对于这种差异性,开发者应如何解决呢?


语言都包含什么?

各种编程语言都在,以下三个方面上有着很大的不同,语法、语义和标准库。 


语法

如果不遵循语法,那么你会在编辑器中看到各种弯弯曲曲的红线,而且你的代码也无法通过编译器或解释器。 


JavaScript使用大括号,布尔型使用小写的true和false,用//表示行注释。 

如何解决编程语言之间的差异性?从这几点出发!

Python用缩进,布尔型用首字母大写的True和False表示,用#表示行注释。 

如何解决编程语言之间的差异性?从这几点出发!

Haskell又有完全不同的语法: 

如何解决编程语言之间的差异性?从这几点出发!


语义

所有编程语言都有大多数相同的特征:变量赋值、数字相加、字符串操作、调用函数、等等。 

然而,每种语言都有特殊的思想,以特定的方式运行。可以将它们划分成不同的模式(命令式、面向对象、函数式),但是即便是两个相同模式的编程语言在细节上也是完全不同的。 

在“声明类”,“调用函数”,或“定义参数的类型”时,你定义了程序的语义。有些语言遵循这样一套规则,而其他的遵循别的规则。比如:C++中声明的类可以延伸到多个类。当你使用“+”将数字和字符串加到一起的时候,根据语言的语义会得出不同的结果。一些编程语言会因为类型不匹配而导致编译失败,但是有些编程语言会自动将数字转换成十进制的字符串。 

语法与语义的关系就相当于用单词(语法)来表达想法(语义)。你可以通过语言的语法来表达语义。


标准库

最后,每种语言都有各自的软件包,我们称之为“标准库”。 


如何解决编程语言之间的差异性?从这几点出发!


在JavaScript中,你可以使用console.log()代替print(),可以访问Object、Array等类。 

标准库是一门语言中重要的组成部分。它可以为语言带来活力,没有标准库,你无法简单地做出任何东西。 

很讽刺的是,并没有“标准的标准库”。每个标准库基本上都不同于其他库:一些库只提供最低限度的方法,而有些库则提供非常广泛的函数,所以开发人员基本上不需要依赖任何第三方库。 


基本的方法

以上我们介绍了一门语言的构成,接下来我有一个基本的想法:我们是否可以找到一种方法清晰地分割语法、语义和标准库呢?我们又如何实现这一想法呢? 


将标准库抽象成API

API是一个非常高明的概念。每个软件都可以通过API与其他软件沟通。移动端的应用可以通过API与服务器交流。服务器可以通过API与数据库交流。每个人都可以通过API与他人对话。这是一件很酷的事情。 

为什么我要在这里讨论API?因为这正是我们所需要的。API是语言的媒介。它们是一套语义,可以描述一个特殊代码模块对外提供的功能。无论是函数库,HTTP服务器,或是别的。 

声明API的方式多种多样。可以是NPM上的JavaScript模块,并在README文件内提供API文档。也可以是代码中明确声明的API,比如TypeScript模块。也有可能并没有API的声明,也没有清晰的文档。 

但是重要的是:API声明了代码模块的”对外接口“,你可以用其他语言重写模块内部的代码,但API不会发生改变。这就是API的魅力所在。虽然编程语言一团糟,但是API很酷。 


把所有东西都做成API 

现在我们有了干净的代码模块定义的纯粹的语义,并将与标准库的交互抽象成了API。 


下一步做什么?创建API。 

现今的代码库有多个文件构成,彼此之间通过“import语句”互相引用。这对于我们来说很便利,但是这也意味着我们需要在脑海中勾画代码库的结构。任何一个地方发生小的变化,都可能在不经意期间给别的地方带来破坏性的影响,尤其是如果我们没有做好自动测试的话。而且,代码库会不断增长,而编译的时间会逐渐加长。 

也有更好的方法解决这个问题,比如模块化。


如何解决编程语言之间的差异性?从这几点出发!

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

本人对待工作认真负责,善于沟通、协调有较强的组织能力与团队精神 ; 活泼开朗、乐观上进、有爱心并善于施教并行 ; 上进心强、勤于学习能不断提高 自身的能力与综合素质。在未来的工作中,我将以充沛的精力,

  • 2
    推荐岗位
  • 2680
    人气
  • 0%
    受欢迎度

已有0人表明态度,0%喜欢该职业规划老师!

进入TA的空间
资讯动态 直通车
  • 索取资料 索取资料 索取资料
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
何为互联网思维,IT人必须知道的思维方式!
就业趋势 100% 的用户喜欢
编程小白看过来,一招教你学会前端开发必备技能
就业趋势 100% 的用户喜欢
可以编写代码的代码:代码生成的利与弊
就业趋势 0% 的用户喜欢
哪三大计算机专业人才缺口大,毕业就高薪!
就业趋势 0% 的用户喜欢
创始人退休后的Python却即将起飞?
就业趋势 0% 的用户喜欢

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程