工作几年,先后接触c/c++,python,lua,dart,JavaScript,java等各种语言,记录下对于一个编程语言的理解,今天分享一下我自己的心得,这并不是一个标准,不认同还请不要责怪笔者。如果感觉对你有帮助,笔者不胜荣幸!

对一个编程语言的理解,应该关注两个方面

一、语言特性

语言特性由编译器具体实现,具体包括:

1. 强类型vs弱类型

强类型就是类型很硬,不太接受转换

比如c++就是强类型,不同类型转换需要各种cast

JavaScript就是弱类型,一个变量,一会数字,一会字符串,一会对象都没问题

2. 静态类型vs动态类型

静态类型:程序运行前确定变量类型,需事先声明或者由编译器推导

动态类型,程序运行时才进行类型绑定和检查

3. 静态语言vs动态语言

程序在运行时可以更改代码结构,比如JavaScript随时给一个对象添加成员或者添加函数

4. 值类型vs引用数据类型

JavaScript中除了基本数据类型外,其他都是引用类型,所以变量赋值后其实指向的是同一对象

总结:变量声明时是否需要指定类型->静态类型vs动态类型

声明后的类型能否相互转换->强类型vs弱类型

程序运行时,能否改变对象内部结构->动态语言vs静态语言

但,所有这些都不算数,对于dart语言

既可以编译成二进制,AOT,又可以解释运行

变量声明既可以指定类型,也可以dynamic声明不指定类型

不支持反射,所以是静态语言

类型不可随意转换,是强类型语言

二、运行环境

运行环境就是runtime,包括虚拟机或者真实的操作系统,需要注意的有

1. 编译运行vs解释执行

编译型:源代码->编译器->可执行代码

解释型:解释器读取源代码,编译,然后运行。

区别仅仅是源代码翻译成目标代码的时机不同。

c/c++是编译型,各源文件编译成obj,后经过连接器链接为可执行文件,后操作系统加载执行

js,python是解释型,先编译为字节码,后由虚拟机加载执行。

要注意编译单位:c/c++是以文件为单位,nodejs和python同样,但网页中js是以代码块(<script>分割)独立翻译,执行,但各代码块共享变量

2. 异步编程模型

nodejs是单线程异步模型,异步模型导致回调地狱问题,后出现await,async,以同步编程方式来编写异步代码。更好维护

3. 垃圾回收

只管使用,不用操心内存释放。

越高级语言,开发者越不需要关心底层,c/c++,不需要关心汇编指令,但是需要负责内存的申请和释放,而java,js,dart等现代化语言,开发者不需要关心内存问题,这是语言发展的必然。

学习C/C++编程知识,可以关注博主,希望文章对你有帮助。

资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解!相关推荐

  1. 一个资深程序员看12306 (三)

    首先声明,本篇文章内容将和12306没有半毛钱关系,只是对(一)和(二)的延续. 实话说,原本是没有打算写三的,其实最初只打算写个一,因此,当时博客文章命名为<资深程序员看12306铁路售票系统 ...

  2. 一个资深程序员看12306

    http://blog.csdn.net/nostopstep/article/details/18222629 12306铁路售票系统,这是近两年来难以绕开得话题.在2012年的时候,刚看到谩骂调侃 ...

  3. 如何成为一位资深程序员:学习技术的艺术

    在程序员的世界里,技术是我们的核心武器.无论你是初入职场的新手,还是已经在行业摸爬滚打多年的老兵,都需要不断地学习新技术来保持竞争力.那么,如何才能有效地学习技术,成为一名资深程序员呢?本文将为你提供 ...

  4. 转载:一位资深程序员大牛给予Java初学者的学习路线建议

    一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来 ...

  5. 资深程序员不一定当得了软件架构师

    本文的作者Armel Nene是ETAPIX Global公司的首席架构师,他居住在伦敦,他参与过的开源项目包括 Apache Lucene,,Apache Nutch, Liferay 和 Pent ...

  6. 三十功名尘与土——资深程序员生涯自白

    摘要:作者Codist(网名)在程序员岗位上工作了三十多年,在这期间他悟出了一些真理,比如,成功来自对失败的总结学习:条条大路通罗马,罗马并不在乎你用什么方式到达.你在生活中积累了哪些经验呢?不妨与我 ...

  7. 《都挺好》苏明哲为什么会失业,美国程序员不好找工作吗?

    当了10年程序员的斯坦福硕士, 却只拿9万美金年薪? 9万美金年薪, 却在旧金山湾区买了套四居室独栋大房子? 母亲去世跟公司请假就被辞退? 失业后找不到工作竟然要去刷盘子? <都挺好>火了 ...

  8. (转)一位资深程序员大牛给予Java初学者的学习路线建议

    一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来 ...

  9. 资深程序员被逼无奈出来摆摊了,快来捧个人场!

    资深程序员被逼无奈出来摆摊 产品介绍 软件技术规格 产品型号对照表 开始使用 1.接通电源.网络 2.登录设备 3.连接信号源 总结 大家好,现在程序员都要出来摆摊了,所以这几天我抓紧排练,先在公司演 ...

最新文章

  1. Ajax之同步请求和异步请求的区别
  2. 【整理】内向交货(Inbound Delivery)
  3. final类是否可以被代理_设计模式——代理模式
  4. C++ : 返回两个字符串的最长公共字符串
  5. 分布式任务分发框架Gearman教程和PHP实现实例
  6. 关于计算机网络拓扑说法正确,计算机网络试题库 - 谢希仁(第六版)(答案解析)...
  7. java pojo使用_在POJO中使用ThreadLocal进行Java嵌套事务
  8. Cloudera Manager安装之Cloudera Manager 5.3.X安装(三)(tar方式、rpm方式和yum方式)...
  9. 大数据分析的优势有哪些特点
  10. 用python把unix格式转换成windows格式
  11. c语言程序设计教程期末考试,《C语言程序设计》课程考核方案
  12. python文件IO中的二进制格式与文本格式
  13. Oracle数据库基础入门
  14. 人脸识别技术大起底,你了解多少?
  15. 手撕包菜磁力搜索引擎的开源说明
  16. 汽车主要电子控制系统模块
  17. 在线客服系统可以帮助企业解决哪些问题?
  18. 笑话:如果你在河边等待得足够久,你会看到你的敌人的尸体漂过,是怎么翻译出来的?
  19. 创建私有CA和证书申请
  20. 在Word、WPS中插入AxMath公式导致行间距异常的解决办法

热门文章

  1. linux桌面环境是什么意思,Linux 黑话解释:什么是桌面环境?
  2. java运行win10_win10配置java运行环境
  3. python怎么打开一个窗口_python – 使按钮一次只打开一个窗口(通过关闭Toplevel窗口启用按钮)...
  4. idea 鼠标变量_IntelliJ IDEA鼠标悬停方法显示Java Doc
  5. oracle 分页_80分页查询,不止写法
  6. python args kw_Python基础-参数魔法,*args,**kwags
  7. 视频容器与编解码器的区别
  8. 面试题,如何改进一款产品
  9. java liste_内功心法 -- java.util.ArrayListE (1)
  10. idea查看类关系_IDEA查看类关系图【正确姿势】,非常实用