工具推荐其一

文章介绍了作者使用过的多种编程语言的特点,如C语言作为基石,C++的复杂性,Java和C#的生态系统,Go的协程,Rust的内存安全,以及Lisp和Haskell在函数式编程中的地位。此外,还提到了不同IDE的优点,如VisualStudio、IntelliJIDEA和VSCode。
摘要由CSDN通过智能技术生成

(点击上方公众号,可快速关注)

工欲善其事,必先利其器。总结一下这些年用得一些比较顺手的工具,纯主关看法,希望对大家有所帮助。

编程语言

因为工作和兴趣爱好,用过很多编程语言,包括C/C++、Java、C#、Python、JavaScript、汇编、SQL、Go、Rust、Lua、Lisp、Prolog、Haskell、Idris、Scheme、Bash、HTML等,每种语言都有其特点,这里简单介绍它们给我的主要印象。

  • C语言

    现代计算机软件系统的基石,所有操作系统及其他系统软件基本上都是用C语言编写的。它的特点是抽象层次比较低,与汇编语言的映射关系比较直接,编译器生成的汇编语言和源代码很好对应,带来的优点就是性能高;使用广泛且ABI稳定,让其他语言FFI调用C语言成为了可能,基本上所有的编程语言都可以调用C,如Java JNI。

    C语言是现代汇编语言,如果要深入学习计算机体系,甚至其他编程语言,学习C语言是必不可少的。

  • C++语言

    我的工作语言。C++基本完全兼容C语言,同时支持多范式编程,导致语言本身庞杂,要用好它很难。

    兼容C语言,早期利于C++的推广,但也背上了甩不掉的包袱,导致后续语言的演进步履维艰。比如,同类语言特性在其他语言规则简单,但在C++中会很复杂,而且往往有例外情况,心智成本极高。

    C++的多范式仁者见仁,出发点是好的,让程序员选择合适的工具构建自己的程序,但另一方面就是太灵活,约束少。在我的工作环境里没有强有力的规范约束,导致出现了至少3种风格:

    • 过程式:一个函数上千行,完全过程描述

    • 面向对象:继承+多态,基本就是Java代码的风格

    • 模板:大量使用模板

即使每种风格每个人理解的也不一样,代码得有多难维护吧。

Java、C#

接触Java比较早,当年是被Applet吸引过来的,语言本身中规中矩,完全面向对象。经过这些年发展最厉害的地方是生态强大,基本上你需要的库、框架等都能从开源项目里找到。C#语言跟Java很像,但具有后发优势,在语言设计上和性能上都比Java好点,但生态一直不如Java,这门语言发展还不错,已开源,现在也已经跨平台了。

Go

公司主要用在一些对性能要求不高的http服务上。有一些槽点,空指针、错误处理、泛型等设计上很难让人认为这是一门21世纪的语言,当然,协程的内置支持是其一大亮点。与一些优秀的语言相比,这门语言设计得一般,但可能语法简单,在国内比较火。

Rust

2018年的时候,曾深入学习了差不多半年时间,吸引我的点是内存安全。做个对比,近10年时间,我在工作中解决了C/C++项目差不多500个bug,大部分都跟内存有关,如果使用Rust语言,最少400个bug都能避免,能节省大量的排查时间。

Rust语言无GC性能很高,跟C/C++一个量级;入门难度高,当时卡我的一个点是生命周期,概念原理虽然简单,但具体实施起来很复杂,复杂点的代码需要上下文推理。除此之外都是很顺畅的,因为大部分语言特性都是C++的优化,所以有C++基础的入门会快点。

这些年Rust发展还不错,已经有越来越多的公司开始使用这门语言。所以我强烈推荐一些新的应用可以使用这门语言。

Lisp、Scheme

Lisp语言是第一门函数式编程语言,函数是第一类对象。严格点说,Lisp是一类语言,Emacs使用的elisp、标准的common lisp,以及提到的Scheme都属于Lisp语言。

它的特点是代码大量使用括号,在编程过程中实际上是手工制作AST的过程,这样代码跟数据没有本质差别;同时它们提供的安全宏完全秒杀C语言的宏。Scheme即使放在Lisp家族也是语法特别简单的,几小时内就可以掌握这门语言的语法。

如果想深入学习函数式编程,又不想把过多精力放在语言的细枝末节上,可以考虑下Scheme。

Haskell、Idris

Scheme是动态语言,如果想学习静态的函数式语言,我推荐Haskell。Haskell是纯函数式的编程语言,不允许副作用,提供了很多抽象来简化编程,而且生态也不弱,Hackage上有大量的第三方包。Haskell一直是编程思想的实验场,如果想实践新的编程思想,可以了解下这门语言。

Haskell是上世纪90年发明的,年头也比较长了,免不了也背了沉重的包袱。Idris就是其后继者,目前Idris2还在发展中,生态还不健全,要用在工业上尚需时日。

IDE

选IDE的基本原则是适合自己应用场景。这里仅列出我用过且不错的IDE:

  • Visual Studio

    宇宙最强IDE,C/C++、C#开发神器,社区版可以免费使用。推荐

  • IntelliJ

    这家公司的产品很强大,Java、C#、Go、Kotlin、C/C++、Python等都有相应的产品支持,尤其对Java的支持无出其右,推荐

  • Eclispe

    开源。早期学习Java用的,现在已经支持很多语言和应用了。早期很火的MyEclipse就是基于Eclipse,直到IntelliJ IDEA 出现。

  • NetBeans

    开源。通过插件能支持很多语言和应用,这是我一直在用的Java IDE,从启动和响应上,感觉是IntelliJ IDEA和Eclipse要快,界面也比较简洁。插件很少,个人用绰绰有余,工作用略显不足。现在已经交给Apache维护,好多插件,如C/C++插件功能还比较弱。

  • VSCode

    严格意义上,VSCode不是IDE,只是一个文本编辑器。由于其优秀的插件机制,可通过安装不同的插件实现IDE的效果,能支持很多语言的开发,推荐

    插件质量高,公司和组织都提供官方的插件,这是我推荐的主要原因;同时,插件的配置也比较简单,安装后基本开箱可用,与之相比,Emacs、VIM等编辑器配置要复杂得多。

除了以上,还使用KDevelop、Builder、Qt Creator、Code::Blocks等,使用时间都不长久。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值