跳到主要内容

编程语言

Programming Language
一切的起点

你可能需要知道...​

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

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

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

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

编程语言是什么?​

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

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

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

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

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

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

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

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

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

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

所以?​

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

一些概念​

语言服务器​

Language Server

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

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

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

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