跳到主要内容

编程语言

Programming Language
一切的起点

你可能需要知道...

我们应该从最底层一路走来吗?

大概率的,大部分人实际上都不是从底层学起,而且不太适合从底层学起
底层实现太晦涩了,大部分人可能一开始都没有接触过,从开始

我们对于编程语言的了解很大可能是从一行命令,一个脚本开始的

Anyway,不管我们是否了解底层,至少我们已经站在这条路的起点了

编程语言是什么?

用来写程序的工具,大概的,我习惯把它看成积木或者拼图
但有的人喜欢把它看成文字,看成自然语言

我想说
编程语言是逻辑结果的形式化表达

它是数学语言,而非自然语言
显然积木这类益智玩具很符合这种叙述

而且,它运用逻辑,但却不表达逻辑推导的过程
推导只在我们的脑子里进行
程序是推导的结果,编程语言是结果的表达

我们该怎么学习编程语言?

首先,编程语言基于一些思想而设计
我们得知道它有哪些思想,我们是否了解
背语法反而是次要的工作

当我们了解了某种设计思想
那么所有用了这种思想的编程语言其实我们都会了

我们应该专注于编程语言本身吗?

除非你是编程语言的设计者,或者你是编译器的开发者,或者你是编程语言的研究者
否则你不应该过多地去专注于编程语言本身

什么意思?
就是说单一种类编程语言不是编程的一切

所以?

去写程序,而不是去写编程语言

一些概念

语言服务器

Language Server

语言服务器是实现了语言服务器协议(Language Server Protocol,简称 LSP)的工具或服务

LSP 是一个开放的标准,用于编程语言处理和集成开发环境(IDE)之间的通信
它允许开发工具插件化,为多种编程语言提供编辑器支持,如自动完成、跳转到定义、重命名符号、查找引用、错误检测等。

LSP 的主要优点是:一旦某种编程语言实现了一个 LSP 服务器,这个服务器就可以与任何支持 LSP 的编辑器或 IDE 配合工作。这意味着,对于语言开发者来说,他们只需要编写一次服务器,就可以为多种编辑器提供高级功能。

具体来说,当你在编辑器中编写代码时,编辑器会与后台运行的语言服务器通信,查询如何自动完成、高亮错误等。服务器会分析你的代码,然后给编辑器发送相应的信息。