看啥推荐读物
专栏名称: 陆满庭
振衣千仞冈,濯足万里流
今天看啥  ›  专栏  ›  陆满庭

小巧玲珑的计算机语言 - Red - 双语 - R1.1

陆满庭  · 简书  ·  · 2020-03-03 12:10

Red语言并不是一个很流行的语言,它自REBOL语言发展而来,但包括Red和它的母语REBOL,甚至都没有排进编程语言排行榜的前50位(根据最新一期TIOBE排行榜)。

但是,Red语言是一门小巧玲珑,而又功能不弱的轻量级编程语言。所谓的轻量级,是指整个语言的编写相对更贴近一般人类的思路,贴近高级语言因而书写便捷,编程和运行环境非常简单,实际上只有一个可执行文件。而功能不弱,体现在下面几个地方:跨平台、即支持解释运行又支持编译运行、内置的语言级别上支持图形界面(GUI)开发、方便的网络编程能力(例如发邮件、抓取网页等往往一条语句就可以实现)。


下面,我们从英语原文来稍作深入地了解一下。

注意:我们的译文会增加一些必要的解释。


Red is a programming language that fits in a single executable file with about 1MB. No install, no setup.

Red是一门编程语言,它的主程序文件只有大约1M字节大小。不需要安装,也不需要设置。


Red is free and open-source.

Red是免费的和开源的。


Red is interpreted, but can compile you code and generate single standalone executables.

Red语言是解释执行的,但也可以编译代码(执行),并可以只生成一个可执行文件。

* 注:编译时也可以使用共享连接库的方式减少主程序的大小。


Red does some compiling before interpreting, and so turns out to be quite fast.

解释运行程序时,Red也会先做一些编译工作,这样可以让程序执行得更快一些。


Red is simple. Its code is clean and has no bloat at all.

Red很轻巧,(用Red语言编写的)代码很整洁并且不会变的臃肿。


Red is under development (alpha) as of october 2018, but aims at:

Red从2018年开始开发,目前处于Alpha阶段,但它的目标是:

- being multi-platform;

支持多平台

- having cross-platform native GUI system, with a UI dialect and a drawing (graphics) dialect;

支持跨平台的原生图形界面(GUI)系统,依靠UI方言和画图方言。

* 注:方言(dialect [ˈdaɪəlekt]) 是从REBOL语言就存在的一种类似“子语言”的东西,一种dialect一般用于某一类特定的功能范围。

- being a full-stack programming language, that is, from very low to very high level.

成为一个“全栈”的编程语言,也就是说,从很低到很高级别(这里是指Red语言即像低级语言那样性能高效,又可以像高级语言那样编写方便)。

* 注:所谓的“全栈”(full-stack),一般指的是开发人员具备从后台到前台到网络和数据库等的全面开发能力,在这里,指的是可以用Red语言胜任从后台到前台、从底层到高层的各种开发任务。


Red is the open-source evolution of Rebol. If you want to try some of the features that are not yet available in Red, you should download Rebol and try it. However, Red is the future.

Red语言是Rebol语言的开源进化版。如果你想尝试一些Red中还没有的特性,可以试着下载Rebol进行体验。但是,Red语言是未来。

* 注:Rebol语言已经很多年没有更新了。


Red is being developed by a group of people led by Nenad Rakocevic.

Red是由Nenad Rakocevic领导的一个团队正在进行开发的。


我们来看一个小例子来体会一下Red语言程序的画风。


Red [needs: view]

view [

title "加法演示"

f1: field "3"

f2: field "5.6"

button "加" [

t1/text: rejoin [f1/text " + " f2/text " = " ((to float! f1/text) + (to float! f2/text)) ]

]

return

t1: text "此处将显示结果" 200

]


这一段代码可以在Windows或Mac OS下运行(目前Red语言的Linux版似乎还不支持GUI编程),运行后的结果如下图所示



点击按钮“加”后,对话框下方的文字将显示两个数字的加法计算结果:



看到了吧,Red语言实现一个图形界面的程序就是这么简单,无需任何附加的IDE开发环境,随便用个文本编辑器就可以编程,并且无需运行在类似JAVA语言所需的虚拟机之上,可以直接编译成对应操作系统的原生应用程序,对于编程老司机来说,是不是有一些诱惑呢?作为一个精通十几种语言的自身开发者来说,反正我想不到哪门语言能做到这一步。


顺便提提各种语言的优势和劣势吧,注意一家之言仅供参考,另外,并不是说要因此推荐Red语言,相反Red语言显然在现阶段还难以真正担负起产品化系统的开发任务:

我们以2019年8月的TIOBE编程语言开发榜依次挑主要的语言来说吧:

Java :很优秀,可以算是全栈语言,但越来越臃肿,Eclipse、Maven、各种配置,对于入门甚至是老程序员要新搭建一个开发环境来说,都需要不少的准备时间。另外,JVM的存在毕竟让运行效率比原生的C/C++等语言开发的程序低一些。

C :一代经典,至今仍广泛用于一些底层开发,但毕竟编写和维护都存在不方便和缺陷之处,指针操作可能引起的崩溃也是常被诟病的地方。

Python :解释型的高级计算机语言,方便易用,可用库丰富,也是一门全栈语言,尤其在人工智能蓬勃发展的今天,更得到了广泛的使用。缺点呢,到目前为止,性能相对偏低、并发编程(多线程)能力弱、代码不易加密、图形界面开发能力不强。

C++ :也是一代经典的面向对象开发语言,可惜面向对象的实现路径最后搞得过于复杂,整体编程难度偏高,尤其是界面编程,底层编程倒是效率还不错。

C# :也是很优秀的开发语言,基本具备Java的大部分优点,并且具有方便的GUI开发能力(结合Visual Studio),可惜平台受到了限制,局限于Windows平台,其他平台虽然也有办法,但毕竟不方便。

Visual Basic :入门简单,作界面简单,但构建大型系统毕竟不是首选,面向对象编程也是显得比较乱,b并且也是局限于Windows平台。

Javascript :在浏览器和从Node.JS开始进入的后台开发领域都有较好的表现,但总觉得是“强行”把一门前端语言改造成后台语言,另外,Javascript处理图形界面也并不是很完美,当然HTML本身也不完美,主要缺点是乱,开发起来并不方便,即使是在现在有了很多WEB框架的情况下。

PHP :只适合做网页,面向对象处理也很迁就。

Objective C Swift :都很不错,但目前暂时主要还是应用在iOS领域。

SQL :仅用于数据库操作;

Ruby :与Python的情况类似;

Delphi/Object Pascal :曾经火热过,也一度没认为是最方便的图形界面开发语言(其实有些混淆了Delphi和它依托的Pascal语言),可惜商业化后来没有跟上,虽然后来有免费的Lazarus,但失去的用户追不回来了。另外,Pascal语言写起来确实繁琐了一些。

汇编语言 :不用说了,太繁琐,一般人不可能用它来开发的。

Go语言(Golang) :近些年后台开发的一股生力军,生而就是为后台开发而来的,语言级别支持的并发能力和便捷的网络开发支持是它的体现之一,非常优秀,也有许多第三方库,可惜就是GUI开发能力是硬伤,暂时只适合用于后台开发。

其他如R、Dart、Rust、Lua、Scala这些语言,都还局限于某一片应用领域,或者偏重于解决某一些问题,也大都还存在着这种那种不足之处。


最后,Red语言的官网是 red-lang.org,有兴趣的可以去体验尝试,直接下载该语言的主程序(没有安装包),第一次运行时会自动配置环境,所以建议在运行前放在一个固定的目录下。

另外,友情提示,Windows版的Red运行似乎有问题,会出现类似下面截图的提示:



用下图所示的方法即可正常运行:

也可以编写一个批处理文件red.bat放到可以被找的目录下,内容是类似:

"d:\tools\red\red.exe" %*

就可以了,运行效果如下图所示:





原文地址:访问原文地址
快照地址: 访问文章快照