资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解!
工作几年,先后接触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++编程知识,可以关注博主,希望文章对你有帮助。
资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解!相关推荐
- 一个资深程序员看12306 (三)
首先声明,本篇文章内容将和12306没有半毛钱关系,只是对(一)和(二)的延续. 实话说,原本是没有打算写三的,其实最初只打算写个一,因此,当时博客文章命名为<资深程序员看12306铁路售票系统 ...
- 一个资深程序员看12306
http://blog.csdn.net/nostopstep/article/details/18222629 12306铁路售票系统,这是近两年来难以绕开得话题.在2012年的时候,刚看到谩骂调侃 ...
- 如何成为一位资深程序员:学习技术的艺术
在程序员的世界里,技术是我们的核心武器.无论你是初入职场的新手,还是已经在行业摸爬滚打多年的老兵,都需要不断地学习新技术来保持竞争力.那么,如何才能有效地学习技术,成为一名资深程序员呢?本文将为你提供 ...
- 转载:一位资深程序员大牛给予Java初学者的学习路线建议
一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来 ...
- 资深程序员不一定当得了软件架构师
本文的作者Armel Nene是ETAPIX Global公司的首席架构师,他居住在伦敦,他参与过的开源项目包括 Apache Lucene,,Apache Nutch, Liferay 和 Pent ...
- 三十功名尘与土——资深程序员生涯自白
摘要:作者Codist(网名)在程序员岗位上工作了三十多年,在这期间他悟出了一些真理,比如,成功来自对失败的总结学习:条条大路通罗马,罗马并不在乎你用什么方式到达.你在生活中积累了哪些经验呢?不妨与我 ...
- 《都挺好》苏明哲为什么会失业,美国程序员不好找工作吗?
当了10年程序员的斯坦福硕士, 却只拿9万美金年薪? 9万美金年薪, 却在旧金山湾区买了套四居室独栋大房子? 母亲去世跟公司请假就被辞退? 失业后找不到工作竟然要去刷盘子? <都挺好>火了 ...
- (转)一位资深程序员大牛给予Java初学者的学习路线建议
一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来 ...
- 资深程序员被逼无奈出来摆摊了,快来捧个人场!
资深程序员被逼无奈出来摆摊 产品介绍 软件技术规格 产品型号对照表 开始使用 1.接通电源.网络 2.登录设备 3.连接信号源 总结 大家好,现在程序员都要出来摆摊了,所以这几天我抓紧排练,先在公司演 ...
最新文章
- Ajax之同步请求和异步请求的区别
- 【整理】内向交货(Inbound Delivery)
- final类是否可以被代理_设计模式——代理模式
- C++ : 返回两个字符串的最长公共字符串
- 分布式任务分发框架Gearman教程和PHP实现实例
- 关于计算机网络拓扑说法正确,计算机网络试题库 - 谢希仁(第六版)(答案解析)...
- java pojo使用_在POJO中使用ThreadLocal进行Java嵌套事务
- Cloudera Manager安装之Cloudera Manager 5.3.X安装(三)(tar方式、rpm方式和yum方式)...
- 大数据分析的优势有哪些特点
- 用python把unix格式转换成windows格式
- c语言程序设计教程期末考试,《C语言程序设计》课程考核方案
- python文件IO中的二进制格式与文本格式
- Oracle数据库基础入门
- 人脸识别技术大起底,你了解多少?
- 手撕包菜磁力搜索引擎的开源说明
- 汽车主要电子控制系统模块
- 在线客服系统可以帮助企业解决哪些问题?
- 笑话:如果你在河边等待得足够久,你会看到你的敌人的尸体漂过,是怎么翻译出来的?
- 创建私有CA和证书申请
- 在Word、WPS中插入AxMath公式导致行间距异常的解决办法
热门文章
- linux桌面环境是什么意思,Linux 黑话解释:什么是桌面环境?
- java运行win10_win10配置java运行环境
- python怎么打开一个窗口_python – 使按钮一次只打开一个窗口(通过关闭Toplevel窗口启用按钮)...
- idea 鼠标变量_IntelliJ IDEA鼠标悬停方法显示Java Doc
- oracle 分页_80分页查询,不止写法
- python args kw_Python基础-参数魔法,*args,**kwags
- 视频容器与编解码器的区别
- 面试题,如何改进一款产品
- java liste_内功心法 -- java.util.ArrayListE (1)
- idea查看类关系_IDEA查看类关系图【正确姿势】,非常实用