1,我所理解的编程语言
1.1,语言的大致分类:
机器,汇编,高级
1.2,面向对象和面向过程:
1,最本质的区别在于考虑问题的出发点不同,面向过程是以事件流程为考虑问题的出发点,而面向对象则是以参与事件的角色(对象)为考虑问题的出发点,所以面向对象在处理问题时更加灵活。
2,目前,面向过程的语言更多被用于处理底层业务,而面向对象编程则更多用于实现一些业务逻辑复杂的大型系统
3,从结构上来说,面向过程的特点是模块化和流程化,而面向对象的特点是封装、继承和多态,这里面就有本质的区别了。
4,面向过程以功能(函数)作为模块化的基础,而面向对象则以类作为功能的组织基础
1.3,解释语言和编译语言:
定义:
1,编程语言是把程序员所定义的代码翻译成计算机所认识的二进制代码的工具;
2,脚本语言是解释执行的(如写的前端代码过能浏览器这个解释器,把代码呈现出web界面,这就是在运用脚本语言,进行编程;
区别:
1,脚本语言因为不需要编译器,省去了编译的过程,这就极大的减少了,开发的的时间,而编程语言,因为需要编译,所以可能需要的时间更加长一些,
2,脚本语言是一种动态语言,也就是说可以实时的更改代码,而不需要将程序停止下来,这是一种高级特性,而Java等编程语言,是静态的语言,一旦编译完成并且运行,就不能更改代码,除非将程序停止下来,但是这样的代价是比较昂贵的。
3,脚本语言非常容易学习,但是也造成了它的不足,就是不全面,缺乏系统性,语法比较散漫,而高级编程语言,虽然相对难学,但是规则强,可以编程出,简洁美观的代码,并且可读性也相对较强。
4,一般来说脚本语言通用性较差,但是可以通过专门的应用来调整。
5,随着技术的发展,其实脚本语言变得越来越强,和编程语言的界限也比较模糊,比如Python,可以将它视为编程语言了,因为它很强大。
1.4,误区:
1,刻意地贬低某类语言;
2,人云亦云地跟风或者吹捧某类语言;
3,流于表面地去评价某类语言难,语言流行,而不去深入思索
2,类比例子:选电脑
一个程序语言就像一台电脑。它的牌子可能叫“联想”,或者“IBM”,或者“Dell”,或者“苹果”。那么,你可以说苹果一定比 IBM 好吗?你不能。你得看看它里面装的是什么型号的处理器,有多少个核,主频多少,有多少 L1 cache,L2 cache……,有多少内存和硬盘,显示器分辨率有多大,显卡是什么 GPU,网卡速度,等等各种“配置”。有时候你还得看各个组件之间的兼容性。
3,方法
1,通用语言特性有哪些
2,特有语言特性有哪些
3,动手实现语言特性
类型推导,类型检查,惰性求值等的实现
4,入门语言选哪些
选java,c,js,python,
不推荐shell,Go,php
5,高手怎样接触新语言
1,确定好语言
2,熟悉工具,搭建好环境
3,理清通用语言特性和特有语言特性
4,为实现某一个效果,逐渐带出问题,然后查阅,逐步实现自己的想法
5,不要从书籍或者手册开始,要掌握关键,忽略次要
6,通用语言特性
变量定义
算术运算
for 循环语句,while 循环语句
函数定义,函数调用
递归
静态类型系统
类型推导
lambda 函数
面向对象
垃圾回收
指针算术
goto 语句
......
<div style="background-color:#F9F0D8;border-left:5px #FFC900
solid">
<font color=#060F27 size=2.5 face='黑体'>
⚠️
如果你不能用一种语言里面的基本特性写出好的代码,那你换成另外一种语言也无济于事。你会写出一样差的代码。我经常看到有些人 Java 代码写得相当乱,相当糟糕,却骂 Java 不好,雄心勃勃要换用 Go 语言。<br/>
这些人没有明白,是否能写出好的代码在于人,而不在于语言。如果你的心中没有清晰简单的思维模型,你用任何语言表述出来都是一堆乱麻。如果你 Java 代码写得很糟糕,那么你写 Go 语言代码也会一样糟糕,甚至更差。
</font>
</div>
7,总结:
1,学号编程语言的根本,是重视语言特性,而不是语言
2,任何语言在我的面前,都是可以被任意拆卸组装的玩具,而不再是凌驾于我之上的神圣。