美文网首页
这些年用过的语言

这些年用过的语言

作者: jackben | 来源:发表于2020-12-21 14:25 被阅读0次

这两年接触了不少语言, 感触最深的是每个语言都有它独特的运用场景。

而且未来的开发趋势不是只是用一种语言, 而是基于多语言的开发,这样可以充分利用每个语言的特性开发不同的任务。

接下来, 我想谈谈我使用过的语言和我对这些语言的看法。

最先接触的一门语言是C。 那是在进入大学之后,大一上学期就会教的一门语言。 C 语言学起来一点都不简单。 C 语言最难的一部分就是对指针的理解, 我想说这是C语言的精华之一。 因为要充分理解指针,我们就得理解计算机系统的内存结构, 如 栈 和 堆, 所以学习指针, 我们必须得更深入的了解计算机系统。 而且指针也是数据结构的基础, 数据结构中的链表和树都是基于指针来实现的。 C语言的特点是高性能 和 可移植性高, 所以C语言通常是系统开发的首选语言, 如 redis, nginx, lua。 但是C语言的缺点是需要手动分配和回收内存, 并且对复杂数据类型的封装比较少, 如 C语言中没有string类型, 所以基于C语言的开发效率会比较低。

既然学过了C, C++当然是少不了了。 C++ 是在大二学的, 当时觉得C++是个非常难的一门语言, 可能当时是第一次接触面向对象, 很多概念都不理解。对C++最大的印象就是 STL 库, 封装了很多复杂的数据类型和算法, 可以快速提升开发效率。

紧接着, 在大二也开始学习java了,java也是我后面工作的主要语言。 java最大的特点就是面向对象。 所以对一些大型的复杂项目, 面向对象可以对业务完成很好的封装。 如果要说面向对象最好用的一个特性, 我会选择多态。 多态在业务开发中占据了重要的角色, 并且可以提供非常好的扩展性。 面向对象最难用的特性, 我会选择继承,因为如果一个父类被很多子类继承, 修改父类的代码可能会牵一发而动全身。

Python 是最近两年才开始学习的语言, 不得不说我真的很落伍,这么火的语言, 我居然学习的那么晚,得自我反省一下了。 我用Python的初衷是刷算法题。 以前我是用java刷, 但是发现java刷题太费劲了。 用了python刷题以后,我发现刷题的速度快了一半。 所以选择正确的语言干正确的事情是多么重要啊。 后面去公司实习, 主要是负责devops, 都是用python写一些自动化的脚本。 也用python 开发过一些自然语言, machine learning 和 deep learning 的 项目。 python 的学习给我打开了一个语言的新世界, 后续我就不断的学习一些新的语言去解决不同的问题。 python我最欣赏的一个特性就是让高级数据类型符号化(当然这也是脚本语言的标志之一)。 其次就是python提供了很多语法糖,很多复杂的代码一行就可以搞定。 另外python也支持函数式编程,一行代码不是梦。总之, python是一门特别好的语言, 可以用它做web, 如有flask 和 Django 两大web 框架, 也可以做devops去写自动化的脚本, 当然现在最火的一个方向就是数据分析和人工智能,python 有很多优秀的库。

Javascript 是最近学习的一门语言。 上了一门web system的课,  主要是学习前端开发。 随着web的爆炸式增长, javascript 已经成为了一门不可替代的语言。 javascript最值得学习的特性就是异步编程, javascript就是为异步而生的语言, web的交互性注定了javascript要通过异步来提升性能。 javascript 的另外一个特点就是面向原型(prototype),理解javascript就必须得好好的理解原型。javascript 需要掌握的一个数据类型就是 obeject, 这也是javascript的核心之一。 另外就是得理解javascript的闭包 以及函数的context, 这些不理解的话, 开发会踩很多坑。

接下来我想聊一下linux底下的小众语言 sed 和 awk。 这两门语言在处理字符串方面是非常强大的, 如果涉及到字符串的自动化工作, sed 和 awk 是很好的选择。 sed 可以实现字符串增删改查的自动化, 并且支持强大的正则表达式 , 通常会和 awk, grep一起使用, 可以实现oneline 编程。 awk 也是处理字符串, 但是偏向于 csv格式的数据, 可以进行数据的提取,统计, 聚类等操作。 在实现期间, 我曾经用这两门语言 很简单的完成了一些自动化的脚本, 通常一行代码可以完成很复杂的功能。 所以如果做一些devops的工作, 需要好好的去学习者两门语言。

讲了sed 和 awk, 当然要讲perl。 perl我基本没用过。 但是 perl 在处理字符串方面是最最最强大的。 sed, awk支持的功能, perl 统统支持。 并且sed, awk,grep 的正则表达式语法有些不兼容, 但是直接使用perl就没有这个问题了,并且perl的正则表达式是所有语言中最强大的, perl的正则表达式语法也是语言界的标准。 所以如果要涉及文本自动化工作,perl是个不二选择, 当然perl的学习需要费点心思, 因为perl会用到很多反人类的字符@_$_!@$#

接下来, 我要讲一下我非常喜欢的一门语言, 那就是 ruby。 ruby是一门纯粹的面向对象的语言, 但是我更喜欢ruby的函数式编程。因为用ruby去刷算法题, 很多情况下一行就可以搞定。 当然ruby也是因为ruby on rails 这个web 框架而开始流行的,有不少著名的项目是基于ruby开发的, 如github 。 在web开发方向,  ruby 也是一个不错的选择。

现在,我要谈到一门上古语言了, lisp 要登场了。我是在学习人工智能课程中了解了listp。  lisp 是一门纯粹的函数式编程语言,如果要学习函数式编程 和理解函数式思想, 一定要学习一下lisp。 在lisp, 一切皆函数。 当然lisp中无数的括号(), 可能会把人折磨疯了, 并且要写一个嵌套的for 循环, 在lisp也不是那么简单啦。 Lisp是一门学术性语言, 偏向于人工智能, 如果要说现在lisp 现在的用途, 可能就是编写emac的插件了。

除了Lisp, 我还学习了另外一门非常有意思的语言,prolog。 prolog这个语言算是领域专用语言了, 可以用于逻辑推理。 也就是prolog可以定义一个推理规则, 可以基于规则, 进行事实的推理。

语言有面向对象, 有函数式, 有面向过程,有混合式, 也有领域专用, 没有一个语言可以解决所有问题。 所以开发的趋势是多语言的开发,在架构设计,系统维护和业务建模, 要充分的利用不同语言的特性。 语言是工具, 开发效率才是王道。 所以我个人永远不会在乎语言排行榜, 也不会去争论, 只要好用就好。

相关文章

  • 这些年用过的语言

    这两年接触了不少语言, 感触最深的是每个语言都有它独特的运用场景。 而且未来的开发趋势不是只是用一种语言, 而是基...

  • 这些年用过的手机

    想想自己的第一部手机是03年飞利浦的黑白屏,是一个朋友扔给我用的,具体型号已经记不起来,天线是可以拉出来很长很长的...

  • 这些年用过的键盘

    从去年开始, 陆续买了几把比较贵的键盘. 去年(2015)有一段时间代码写的比较多, 在几个月的时间, 写了有数万...

  • 这些年用过的手机

    盘点下这几年买过的手机和花费 手机太重要了,就像是我们的四肢一样的存在。 我在我的博客上,搜索了一下“手机”这个关...

  • 这些年用过的Kindle

    1 我最早买的Kindle是Kindle 3,带键盘的那种。那时候亚马逊中国还没有电子书,想当然,Kindle上全...

  • 这些年用过的社交软件

    我的以“5”开头的九位数QQ是2008年开始使用的吧,记得还是小学同学阿芹帮我申请的。本科读书时,微信还没有流行起...

  • 这些年我们用过的线程

    进程 在系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。一个进程至...

  • 这些年用过的减肥秘方

    致减肥的伙伴们: 减肥的宗旨就是减少脂肪的摄入,增加脂肪的消耗。通俗点说就是“少进多出”。所以吃什么,成了肥胖者头...

  • 这些年,用过的音乐软件

    音乐app没有最好用的,只有最适合自己的。 用过这么多音乐类app,我终于发现了自己的真实心意——网易云音乐。 早...

  • 这些年我用过的精华

    跑程序的间隙来写写精华心得。半个程序员,每天都对着电脑,年轻的时候还买过防辐射面具,觉得电脑屏幕简直是皮肤杀手。而...

网友评论

      本文标题:这些年用过的语言

      本文链接:https://www.haomeiwen.com/subject/naprnktx.html