编程语言

xeonds

2022.12.21 00:00:00

它分属[[计算机科学]]。

简介

先来点简单的介绍。

下面分条列述。

常见编程语言

C

是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言的优良特性包括:不需要任何运行环境支持便能运行;提供了许多低级处理的功能,但仍然保持着跨平台的特性;运行效率极高;有最好的编译器等。一般用来刷oj做嵌入式/系统开发。没有包管理,只能手动导入第三方库。不过语言本身刚刚好,不多不少,只要想干也是啥都能干。Linux御用开发语言。C++就更灵活了,是现代面向对象语言的跌,虚函数多继承之类的各种别人有没有它都有,搓东西也很快,性能强无敌。泛型编程+STL性能强体验也还好,可以POP也能OOP,是神。

Python

是一门面向对象的脚本语言。优点有:简单、易学、用途广泛、速度快、免费、开源、高层语言、可移植性、解释性、面向对象、可扩展性、可扩充性、可嵌入性、丰富的库、规范的代码、高级动态编程、做科学计算优点多。一般用来打杂,比如偶尔写个脚本处理点东西,以及做点自动签到,抢购脚本啥的。组合使用其他命令行工具之类的。AI和图形学领域用py挺多,因为语法方便,脚本语言调试快,而且包管理相当好用。跨平台也很不错。灵魂是库,永远不重复造轮子永远热泪盈眶(错乱),语法极其简单,写起来很顺滑。

Java

一门纯粹的面向对象语言。Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。非常适合做大项目。包管理相当强大,强类型语言保证了项目稳定性。一个Java基本通吃各个领域开发。配合IDEA开发项目无敌。不过代码可能有点长,单文件开发体验不好。

C#

对标Java。虽然似乎是绑定M$的.NET生态了,但是语言本身极强。语法糖,先进思想之类能甩Java几条街。全平台开发甚至几乎超越Java,包括游戏开发领域(Unity)都能完成,相当不错。缺点和Java类似,单文件开发体验不太好,比较绑定Visual Studio。

Golang

被称为网络时代的C语言。单文件开发体验:神。包机制好用,就是首字母大小写决定可见域有点高血压。依赖管理现在也可以了。按照常见的几种开发模式(MVVM等)能够写出来很规整的代码。工具链完善,语言性能强无敌,并发机制极其好用,而且自带代码格式化,代码永远整洁。性能强所以搓轮子很爽。

JavaScript/TypeScript

ES6开始上模块化了。性能挺强的脚本语言,本身是做浏览器里逻辑交互的,不过有了node.js,react native之后也有全平台的趋势。语言本身不重要,主要是神框架多的一批才赢麻了。包管理npm神中神,Vue.js神中神。开发门槛低效率高还跨前后端,语法类C还简单,就是吃了弱类型的亏。另外现在到处电子内存溢出也是它的锅。另外HTML,CSS,XML,JSON真不是编程语言……

PHP

曾经的王者,现在也不弱。统治贴吧,bbs,pt站,个人开发用PHP成本低效率高,不过现在前端发展让后端渲染页面变得落伍了,所以有淘汰的趋势。但是包管理composer,框架thinkPHP,Laravel等都还不错,性能安全性啥的吃了弱类型之类特性的亏。现在8.0应该能好点,可是服务端渲染的时代已经一去不复返了。

Kotlin

和Java一样都是JVM语言,安卓开发御用语言。语法糖也不错,挺简洁。常用操作都封装好了,开发效率一般,略高于Java。数据类很好用,单例模式也不错。判空简单,再也不怕NullPointerException了。编译体积也挺小,体验是真好。跟JAVA一个生态好处就是直接拿来用,而且二者可以混着写。

汇编

硬件平台绑定,底层硬件开发专用。学学这个倒是能了解下计算机组成,很不错。写起来代码太冗长,容易手滑写错。不过能整很多有意思的花活(自修改代码啥的

SQL

看名字也是个语言不过不知道算不算编程语言反正我也就用的时候才查查看以及这玩意确实挺简单关键的就那两句还有删库跑路真爽诶嘿(不是)

Lisp

挺怪的语言,但是据说用习惯了会完全离不开,而且开发效率会奇高。似乎现代编程语言的不少哲学理念都源自它,而且它本身也老的跟C一个年代了。来点源码(我猜那个关于特务偷出机密源码的最后一页发现全是括号的的笑话就是在说Lisp):

(defclass book ()
  ((title :reader book-title
          :initarg :title)
   (author :reader book-author
           :initarg :author))
  (:documentation "Describes a book."))

(make-instance 'book
               :title "ANSI Common Lisp"
               :author "Paul Graham")

剩下的还没咋用过,学了新的再来水字数写使用体验吧。

Lua

以前用AndroLua写安卓APP的时候用过。语言挺好用的,性能挺快,而且非常适合调用C/C++,Java,Objective-C等语言的库。语法简单,但是有点奇怪,比如数组下标从1开始。不过语言本身很小,可以嵌入到其他语言里面,比如C/C++,Java,Objective-C等。所以很多游戏的脚本语言都是Lua。除了AndroLua,我写嵌入式也用过这语言,确实好用。不过Lua也有作为弱类型语言的问题,而且无面向对象,数据类型单一(只有Table)。好像之前那次B站崩了也是因为Lua脚本的问题。

Shell

Linux Shell脚本。语法简单,但是功能强大。可以调用Linux系统的各种命令,可以用来写各种脚本。比如自动签到,自动打卡,自动抢购,自动刷题,自动爬虫,自动化部署,自动化测试,自动化编译,自动化发布,自动化运维等等。本身有很强大的Linux Utilities支撑,可玩性非常高。