分类 观点 下的文章

就前面的几篇文章来说,我一直是以 Ubuntu 与 Fedora 作为新手入门的系统,但是其实我真正想推荐的是 Arch ,经过前面的学习,或许你对 Linux 已经有了一个大致的了解,现在如果你想加速你的步伐,也许可以看看本文。如果要问为什么学习 Linux ,我也只能回答 Just for fun 。

本文基本上是我个人见解,有不正确的地方恳请批评指正,另外本文只是推荐 Arch ,并没有说 Arch 是最适合新手的。

Arch Linux

Arch Linux

我的 Linux 学习之路

谈起我的 Linux 学习之路,时间其实并不长,2014 年的 5 月份左右才加入 Linux 中国的群,才开始了解这个系统,并且因为是高三了,我也不可能花太多时间在学习 Linux 这个系统上的,但是我的经验却使我花了相对很少的时间,已经能达到把 Linux 当作自己的桌面系统的程度了。

一切的起因只因为我电脑仅有 512 Mb 的内存,这使得我这个一直以来的 xp 用户,最后连上个 QQ 都能卡死,这样忍受了很久,终于我去寻找解决的方法了。或许是因为我的想法的原因,解决方法并不是去为电脑升级硬件,而是寻找代替 xp 的系统,这时候 Linux 进入了我的眼球,到处都在说 Linux 轻便简洁,以及只需几十兆内存便可流畅运行。当然这时候我搜索出来的肯定是传说中的对新手最友好的 Ubuntu 了,最后我怀着激动的心情安装了它,当时是很开心的,觉得自己终于能换个系统玩了,可以摆脱过去卡机了。但事实是证明我天真了,Ubuntu 的 Unity 桌面,我的老古董机子根本吃不消,玩起来更卡了,甚至后来装 XUbuntu 也无济于事,遇到问题的时候,我去搜索答案能搜出来,但是答案却是基本是无效的,面对这种情况,我当时玩 Ubuntu 是什么东西也没学到的。

Ubuntu 的体验令我有点沮丧,再者它也不适合我机子。后来我又知道了 Debian ,这个发行版据称稳定健壮。我这次怀着犹豫的心情去安装了,安装过程不像 Ubuntu 那样顺利,记得应该遇到过一点问题,但还是解决了。这次的 Debian 安装让我很满意,我的电脑像复活了一样,再也不会卡顿了。然而面对 Debian 我能干什么?我后来发现我什么也没干,我不了解任何东西,我也只会用鼠标点点,右键查看一下属性,双击点个可执行文件 。就这样过了一两个星期(我是只有周末才有半天从学校回来碰个电脑的),有一天,我看到 Linux 中国的群里在讨论一个名为 Arch 的发行版,出于好奇我去搜索了一番,这便是我与 Arch 相遇的开始。

Arch Linux 的设计理念是 轻量简洁。这点正符合我心意,二话不说我就开始了我的 Arch 之旅。当时我还不懂什么是命令行,安装过程完全是参照 Arch Wiki 的过程,虽然不懂为什么,但是我却是一次安装成功,看着自己一步一步敲命令安装的系统当时特有成就感。 Arch Wiki 提供了一条龙服务,刚安装完系统的 Arch 是不带桌面的,但是 Arch Wiki 提供了详细的桌面配置过程,以及输入法配置过程。查看自己的内存使用情况, LXDE + 32 位的 Arch Linux,我的内存占用才 70 M 左右,我知道我这次找到了真爱,于是一直使用 Arch 至今,也感谢我的电脑配置低,不然我很可能就停留在 Ubuntu 了。

使用 Arch Linux 的优势

至于我为什么要推荐 Arch Linux ?对于一个新手,它相对其他发行版有哪些优势呢?

不少人会说 Arch 太难了,不适合新手,对新手并不友好。可我却不这么认为,难是因为你站在了一个较高的起点,而这个高的起点会使你更快地进步,更快地了解 Linux 。Arch 所带给我的就是这样一种学习体验。我从不会到会,再到教别人所用的时间并不长,也许有人会说我只是个特例,那么这篇文章就是写给那些想成为特例的人。学习是靠自己的,只要自己有心,又有什么学不会呢?最近 “Linux 中国-新手村” QQ 群里的许多新人,总是自己一上来就要答案,但是却不曾想过,自己为这个问题做了什么尝试,自己是否有毅力去坚持学习 Linux ?

下面是自己认为推荐 Arch 的一些理由,仅代表我个人的观点:

  • Arch 使你站在一个较高的起点入门,但相应地,你会需要付出一点耐心去学习,并且你会学的更快
  • Arch Wiki 非常丰富,就是我们遇到问题时解决的利器。在遇到问题时先去 Arch Wiki 搜索一下,基本可以解决,这比搜索引擎搜索出来的 Blog 或别人写的一点笔记要靠谱的多
  • Arch 采用滚动更新的方式,因此你不用再考虑以后升级系统需要重装的问题
  • Arch 除了基础的软件包外,不会附加一些多余的东西,所以你的系统基本上是你所需要的东西
  • Arch 的 pacman 是非常简单高效的包管理工具,帮助你轻松管理系统
  • Arch 的 AUR 仓库包含大量软件包,只需一个 makepkg 命令即可构建,非常方便

基于上面的一些原因,我认为 Arch 其实是适合新手的。

首先它比其他大多数发行版要自由;其次它没有预先安装的图形包管理工具,这使得我们必须在终端下完成我们的大部分操作,这将是我们从 Windows 鼠标模式逃离出来的一种动力与压力,因为你拿着鼠标没什么可干的;最后便是 Arch Wiki 对于绝大多数软件包要如何配置,遇到问题怎么去解决,都有详细的说明,这对于新手来说肯定是一个福音。

我推荐 Arch 其实是把自己置于一个相对的窘迫的境地(但是其实笔者不觉得这是困境,我当时对 Arch 是一见钟情的,怀着极大的兴趣把 Arch 收下了),只有这样才会激活你的动力,战胜它,你就赢了自己,收获了技能,如果选择放弃,那么可能你不适合这种学习方式。

结束

可以说我学习 Linux 基本都得益于 Arch 的 Wiki ,是它为我解决了很多问题,再也不用像无头苍蝇一样去搜索答案,当然你使用其他发行版也可以参照 Arch Wiki ,不要浪费了这份宝贵的资源。另外如果你是真心想学习 Linux ,我推荐你看看 Linus 的自传 《just for fun》,还有鸟哥的 《鸟哥的 Linux 私房菜》。Linus 的自传会使你明白一小部分关于 Linux 的故事,我所做的也只是 just for fun ;而鸟哥的书则可以作为一本入门的书籍,鸟哥写的太详细了,选读部分内容就好。最后祝各位能在接下来的学习之路,奋勇向前。

在不久前的 Linux 大会活动 LinuxCon Linux 基金会 Linux Foundation 宣称 实时Linux操作系统项目 RTL,Real-Time Linux 得到了新的资金支持,并预期这将促进该项目,使其自成立15年来第一次有机会在实时操作性上和其他的 实时操作系统 RTOS,Real Time Operation System 一较高下。Linux 基金会将 RTL 组重组为一个新的项目,并命名为 RTL协作组 Real-Time Linux Collaborative Project ,该项目将获得更有力的资金支持,更多的开发人员将投入其中,并更加紧密地集成到 Linux 内核主线开发中。

新的 RTL 协作组将加速实时 Linux 的发展

根据 Linux 基金会的说法,RTL 项目并入 Linux基金会旗下后,“在研发方面将为业界节省数百万美元的费用。”同时此举也将“通过强有力的上游内核测试体系而改善本项目的代码质量”。

在过去的十几年中,RTL 项目的开发管理和经费资助主要由 开源自动化开发实验室 OSADL,Open Source Automation Development Lab 承担,OSADL 将继续作为新合作项目的金牌成员之一,但其原来承担的资金资助工作将会在一月份移交给 Linux 基金会。RTL 项目和 OSADL 长久以来一直负责维护 内核的实时抢占 RT-Preempt 或 Preempt-RT 补丁,并定期将其更新到 Linux 内核的主线上。

据长期以来一直担任 OSADL 总经理的 Carsten Emde 博士介绍,支持内核实时特性的工作已经完成了将近 90%。 “这就像盖房子,”他解释说。 “主要的部件,如墙壁,窗户和门都已经安装到位,就实时内核来说,类似的主要部件包括: 高精度定时器 high-resolution timers 中断线程化机制 interrupt threads 优先级可继承的互斥量 priority-inheritance mutexes 等。然后所剩下的就是需要一些边边角角的工作,就如同装修房子过程中还剩下铺设如地毯和墙纸等来完成最终的工程。”

以 Emde 观点来看,从技术的角度来说,实时 Linux 的性能已经可以媲美绝大多数其他的实时操作系统 - 但前提是你要不厌其烦地把所有的补丁都打上。 Emde 的原话如下:“该项目(LCTT 译注,指 RTL)的唯一目标就是提供一个满足实时性要求的 Linux 系统,使其无论运行状况如何恶劣都可以保证在确定的、可以预先定义的时间期限内对外界处理做出响应。这个目标已经实现,但需要你手动地将 RTL 提供的补丁添加到 Linux 内核主线的版本代码上,但将来的不用打补丁的实时 Linux 内核也能实现这个目标。唯一的,当然也是最重要的区别就是相应的维护工作将少得多,因为我们再也不用一次又一次移植那些独立于内核主线的补丁代码了。”

新的 RTL 协作组将继续在 Thomas Gleixner 的指导下工作,Thomas Gleixner 在过去的十多年里一直是 RTL 的核心维护人员。本周,Gleixner 被任命为 Linux 基金会成员,并加入了一个特别的小组,小组成员包括 Linux 稳定内核维护者Greg Kroah-Hartman,Yocto 项目维护者 Richard Purdie 和 Linus Torvalds 本人。

据 Emde 介绍,RTL 的第二维护人 Steven Rostedt 来自 Red Hat 公司,他负责“维护旧的,但尚保持维护的内核版本”,他将和同样来自 Red Hat 的 Ingo Molnàr 继续参与该项目,Ingo 是 RTL 的关键开发人员,但近年来更多地从事咨询方面的工作。有些令人惊讶的是,Red Hat 竟然不是 RTL 协作组的成员之一。相反,谷歌作为唯一的白金会员占据了头把交椅,其他黄金会员包括 国家仪器公司 NI,National Instruments ,OSADL 和德州仪器(TI)。银卡会员包括Altera 公司,ARM,Intel 和 IBM。

走向实时内核的漫长道路

当15年前 Linux 第一次出现在嵌入式设备上的时候,它所面临的嵌入式计算市场已经被其他的实时操作系统,譬如 风河公司 WindRiver 的 VxWorks,所牢牢占据。VxWorks 从那时起到现在,一直在为众多的工控设备、航空电子设备以及交通运输应用提供着工业级别的高确定性的,硬实时的内核。微软后来也提供了一个支持实时性的操作系统版本- Windows CE,当时的 Linux 所面临的是来自潜在工业客户的公开嘲讽和层层阻力。他们认为那些从桌面系统改进来的 Linux 发行版本顶多适合要求不高的轻量级消费类电子产品,而不适合那些对硬实时要求更高的设备。

对于嵌入式 Linux 的先行者如 MontaVista 公司来说,其早期的目标很明确就是要改进 Linux 的实时能力。多年以来,对 Linux 的实时性能开发发展迅速,得到各种组织的支持,如成立于2006年的 OSADL,以及 实时 Linux 基金会 RTLF,Real-Time Linux Foundation 。在2009年 OSADL 与 RTLF 合并,OSADL 及其 RTL 组承担了所有的 抢占式实时内核 Preempt-RT 补丁的维护工作和将补丁提交到上游内核主线的工作。除此之外 OSADL 还负责监管其他自动化相关的项目,例如 高可靠性 Linux Safety Critical Linux (译者注:指研究如何在关键系统上可靠安全地运行Linux)。

OSADL 对 RTL 的支持经历了三个阶段:拥护和推广,测试和质量评估,以及最后的资金支持。Emde 表示,在早期,OSADL 的角色仅限于写写推广的文章,制作专题报告,组织相关培训,以及“宣传” RTL 的优点。他说:“要让一个相当保守的工控行业接受象 Linux 之类的新技术及其基于社区的那种开发模式,首先就需要建立其对新事物的信任。从使用专有的实时操作系统转向改用 Linux 对公司意味着必须引入新的战略和流程,才能与社区进行互动。”

后来,OSADL 改而提供技术性能数据,建立质量评估和测试中心,并在和开源相关的法律事务问题和安全认证方面向行业成员提供帮助。

当 RTL 在实时性上变得愈加成熟的同时,相反地 Windows CE 却是江河日下,其市场份额正在快速地被 RTL 所蚕食,一些与 RTL 竞争的实时 Linux 项目,主要是 Xenomai 也已开始集成 RTL。

“伴随 RTL 补丁的成功,以及明确的预期其最终会被完整集成到 Linux 内核主线代码中,导致 Xenomai 关注的重心发生了变化,”Emde 说。 “Xenomai 3.0 可与 RT 补丁结合起来使用,并提供了所谓的‘皮肤’,(LCTT 译注:一个封装层),使我们可以复用为其他系统编写的代码。不过,它们还没有完全统一起来,因为 Xenomai 使用了双内核方法,而RT 补丁只适用于单一的 Linux 内核。“

近些年来,RTL 组的资助来源越来越少,所以最终 OSADL 接过了这个重任。Emde 说:“当最近开发工作因缺少资金而陷入停滞时,OSADL 对 RTL 的支持进入到第三个重大阶段:开始直接资助 Thomas Gleixner 的工作。”

正如 Emde 在其10月5日的一篇博文中所描述的那样,实时 Linux 的应用领域正在日益扩大,由其原来主要服务的工业控制扩大到了汽车行业和电信业等领域,这表明资助的来源也应该得到拓宽。Emde 原文写道:“仅仅靠来自工控行业的资金来支撑全部的工作是不合理的,因为电信等其他行业也在享用实时 Linux 内核。”

当 Linux 基金会表明有兴趣提供资金支持时,OSADL 认为“单一的资助和控制渠道要有效得多”(LCTT 译注:指最终由Linux 基金会全盘接手了 RTL 项目),Emde 如是说。不过,他补充说,作为黄金级成员,OSADL 仍参与监管项目的工作,会继续从事其宣传和质量保证方面的活动。

汽车行业期待 RTL 的崛起

Emde 表示,RTL 会继续在工业应用领域飞速发展并逐渐取代其他实时操作系统。而且,他补充说,RTL 在汽车行业发展也很迅猛,以后会扩大并应用到铁路和航空电子设备上。

的确,Linux 在汽车行业将扮演越来越重要的角色,这也是 Linux 基金对 RTL 所寄予厚望的原因之所在。RTL 工作组可能会与 Linux 基金会旗下的 车载Linux AGL,Automotive Grade Linux 工作组展开合作。Emde 猜测,Google 高调参与的主要动因可能也是希望将 RTL 用于汽车控制。此外,德州仪器(TI)也非常期望将其 Jacinto 处理器应用于汽车行业。

面向车载 Linux 的项目(比如AGL)的目标是要扩大 Linux 在车载设备上的应用范围,其应用不是仅限于 车载信息娱乐 IVI,In-Vehicle Infotainment ,而是要进入到譬如集群控制和车载通讯领域,而这些领域目前主要使用的是 QNX 之类的实时操作系统。无人驾驶汽车在实时性上对操作系统也有很高的要求。

Emde 特别指出,OSADL 的 SIL2LinuxMP 项目可能会在将 RTL 引入到汽车工业领域上扮演重要的角色。SIL2LinuxMP 并不是专门针对汽车工业的项目,但随着 BMW 公司参与其中,汽车行业成为其很重要的应用领域之一。该项目的目标在于验证 RTL 在采用单核或多核 CPU 的 标准化商用 COTS,Commercial Off-The-Shelf 板卡上运行所需的基本组件。它定义了引导程序、根文件系统、Linux 内核以及对应支持 RTL 的 C 库。

无人机和机器人使用实时 Linux 的时机也已成熟,Xenomai 系统早已用在许多机器人以及一些无人机中。不过,在更广泛的嵌入式 Linux 世界,包括了消费电子产品和物联网应用中,RTL 可以扮演的角色很有限。主要的障碍在于,无线通信和互联网本身会带来延迟。

Emde 说:“目前实时 Linux 主要还是应用于系统内部控制以及系统与周边外设之间的控制,在远程控制机器上作用不大。企图通过互联网实现实时控制恐怕不是一件可行的事情。”


via: http://www.linux.com/news/software/applications/858828-new-collaborative-group-to-speed-real-time-linux

作者:Eric Brown 译者:unicornx 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LibreOffice,来自 文档基金会 The Document Foundation 一个自由开源的令人惊叹的办公套件。LO (LibreOffice)在2010年9月28日由 OpenOffice.org 分支出来;而 OOo (OpenOffice.org)则是早期的 StarOffice 开源版本。LibreOffice 支持文字处理,创建与编辑电子表格,幻灯片,图表和图形,数据库,数学公式的创建和编辑等。

核心应用:

  • Writer – 文字处理器
  • Calc – 电子表格应用程序,类似于 Excel
  • Impress – 应用演示,支持 Microsoft PowerPoint 的格式
  • Draw – 矢量图形编辑器
  • Math – 用于编写和​​编辑数学公式的特殊应用
  • Base – 数据库管理

LibreOffice 3.3, 2011

LibreOffice 3.3, 2011

这是LibreOffice 的第一个版本 - 分支自 OpenOffice.org

LibreOffice 3.4

LibreOffice 3.4

LibreOffice 3.5

LibreOffice 3.5

LibreOffice 3.6

LibreOffice 3.6

Libre Office 4.0

LibreOffice 4.0

Libre Office 4.1

LibreOffice 4.1

Libre Office 4.2

Libre Office 4.2

LibreOffice 4.3

LibreOffice 4.3

LibreOffice 4.4

LibreOffice 4.4

Libre Office 5.0

LibreOffice 5.0

Libre Office 的发展,出自 Wikipedia

StarOffice major derivatives

LibreOffice 5.0 预览

(这个视频长达半个小时。配音太魔性了,已被击败了~)


via: https://tlhp.cf/libreoffice-5years-evolution/

作者:Pavlo Rudyi 译者:strugglingyouth 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

史前

没有 C 编程语言) 和 GNU 项目 构成 Linux 环境,也就不可能有 Linux 的成功。

Ken Thompson 和 Dennis Ritchie

Ken Thompson) 和 Dennis Ritchie 在 1969-1970 创造了 Unix 操作系统。之后发布了新的 C 编程语言,它是一种高级的、可移植的编程语言。 Linux 内核用 C 和一些汇编代码写成。

Richard Matthew Stallman

Richard Matthew Stallman

Richard Matthew Stallman 在 1984 年启动了 GNU 项目。最大的一个目标 - 完全自由的类-Unix 操作系统。

1991 – 元年

Linus Torvalds, 1991

Linus Torvalds 在芬兰赫尔辛基开始了 Linux 内核开发,他是为他的硬件 - Intel 30386 CPU 编写的程序。他也使用 Minix 和 GNU C 编译器。下面是 Linus Torvalds 给 Minix 新闻组的历史消息:

From: [email protected] (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: What would you like to see most in minix? Summary: small poll for my new operating system Message-ID: Date: 25 Aug 91 20:57:08 GMT Organization: University of Helsinki

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)

Linus ([email protected])

从此之后,Linux 开始得到了世界范围志愿者和专业专家的支持。Linus 的同事 Ari Lemmke 把它命名为 “Linux” - 这其实是他们的大学 ftp 服务器上的项目目录名称。

1992

在 GPLv2 协议下发布了 0.12 版 Linux 内核。

1993

Slackware 1.0

Slackware 首次发布(LCTT 译注:Slackware Linux 是一个高度技术性的、干净的发行版,只有少量非常有限的个人设置) – 最早的 Linux 发行版,其领导者 Patrick Volkerding 也是最早的。其时,Linux 内核有 100 多个开发者。

Debian

Debian – 最大的 Linux 社区之一也创立于 1991 年。

1994

Linux 1.0 发布了,多亏了 XFree 86 项目,第一次有了 GUI。

Red Hat Linux

发布了 Red Hat Linux 1.0

S.u.S.E Linux

S.u.S.E. Linux 1.0。

1995

Red Hat Inc.

Bob Young 和 Marc Ewing 合并他们的本地业务为 Red Hat Software。Linux 移植到了很多硬件平台。

1996

Tux

企鹅 Tux 是 Linux 官方吉祥物,Linus Torvalds 参观了堪培拉国家动物园和水族馆之后有了这个想法。发布了 Linux 2.0,支持对称多处理器。开始开发 KDE。

1997

Miguel de Icaza

Miguel de Icaza 和 Federico Mena 开始开发 GNOME - 自由桌面环境和应用程序。Linus Torvalds 赢得了 Linux 商标冲突官司,Linux 成为了 Linus Torvalds 的注册商标。

1998

大教堂和集市

Eric S. Raymond 出版了文章 The Cathedral and the Bazaar(大教堂和集市) - 高度推荐阅读。Linux 得到了大公司的支持: IBM、Oracle、康柏。

Mandrake Linux

Mandrake Linux 首次发布 - 基于红帽 Linux 的发行版,带有 KDE 桌面环境。

1999

第一个主要的 KDE 版本。

2000

Dell 支持 Linux - 这是第一个支持的大硬件供应商。

2001

Revolution OS

纪录片 “Revolution OS(操作系统革命)” - GNU、Linux、开源、自由软件的 20 年历史,以及对 Linux 和开源界顶级黑客的采访。

2002

BitKeeper

Linux 开始使用 BitKeeper,这是一种商业版的分布式版本控制软件。

2003

SUSE

Novell 用 2.1 亿美元购买了 SUSE Linux AG。同年 SCO 集团 也开始了同 IBM 以及 Linux 社区关于 Unix 版权的艰难的法律诉讼。

Fedora

红帽和 Linux 社区首次发布了 Fedora Linux。

2004

X.ORG 基金会

XFree86 解散了并加入到 X.Org 基金会, X 的开发更快了。

Ubuntu 4.10 – Ubuntu 首次发布

2005

openSUSE

openSUSE 开始了,这是企业版 Novell’s OS 的免费版本。OpenOffice.org 开始支持 OpenDocument 标准。

2006

一个新的 Linux 发行版,基于红帽企业版 Linux 的 Oracle Linux。微软和 Novell 开始在 IT 和专利保护方面进行合作。

2007

Dell Linux 笔记本

Dell 发布了第一个预装 Linux 的笔记本。

2008

KDE 4.0

KDE 4 发布了,但是不稳定,很多用户开始迁移到 GNOME。

2009

Red Hat

红帽 Linux 取得了成功 - 市值达 26亿2千万美元。

2009 年微软在 GPLv2 协议下向 Linux 内核提交了第一个补丁。

2010

Novell -> Attachmate

Novell 已 22亿美元卖给了 Attachmate Group, Inc。SUSE 和 Novell 成为了新公司的两款独立的产品。

systemd 首次发布,开始了 Linux 系统的革命。

2011

Unity 桌面,2011

Ubuntu Unity 发布,遭到很多用户的批评。

GNOME 3.0,2011

GNOME 3.0 发布, Linus Torvalds 评论为 “unholy mess” ,有很多负面评论。Linux 内核 3.0 发布。

2012

1500 万行代码

Linux 内核达到 1500 万行代码。微软成为主要贡献者之一。

2013

Kali Linux 1.0 发布, 用于渗透测试和数字取证,基于 Debian 的 Linux 发行版。2014 年 CentOS 及其代码开发者加入到了红帽公司。

2014

Lennart Poettering 和 Kay Sievers

systemd 成为 Ubuntu 和所有主流 Linux 发行版的默认初始化程序。Ubuntu 有 2200 万用户。安卓的大进步 - 占了所有移动设备的 75% 份额。

2015

发布了 Linux 4.0。Mandriva 公司清算,但还有很多分支,其中最流行的一个是 Mageia。

带着对 Linux 的热爱而执笔。


via: https://tlhp.cf/linux-history/

作者:Pavlo Rudyi 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

经历了15年的打造,Perl 6 终将在年底与大家见面。我们预先采访了它的作者了解一下新特性。

Larry Wall 是个相当有趣的人。他是编程语言 Perl 的创造者,这种语言被广泛的誉为将互联网粘在一起的胶水,也由于大量地在各种地方使用非字母的符号被嘲笑为‘只写’语言——以难以阅读著称。Larry 本人具有语言学背景,以其介绍 Perl 未来发展的演讲“ 洋葱的状态 State of the Onion ”而闻名。(LCTT 译注:“洋葱的状态”是 Larry Wall 的年度演讲的主题,洋葱也是 Perl 基金会的标志。)

在2015年布鲁塞尔的 FOSDEM 上,我们赶上了 Larry,问了问他为什么 Perl 6 花了如此长的时间(Perl 5 的发布时间是1994年),了解当项目中的每个人都各执己见时是多么的难以管理,以及他的语言学背景自始至终究竟给 Perl 带来了怎样的影响。做好准备,让我们来领略其中的奥妙……

Linux Voice:你曾经有过计划去寻找世界上某个地方的某种不见经传的语言,然后为它创造书写的文字,但你从未有机会去实现它。如果你能回到过去,你会去做么?

Larry Wall:你首先得是个年轻人才能搞得定!做这些事需要投入很大的努力和人力,以至于已经不适合那些上了年纪的人了。健康、活力是其中的一部分,同样也因为人们在年轻的时候更容易学习一门新的语言,只有在你学会了语言之后你才能写呀。

我自学了日语十年,由于我的音系学和语音学的训练我能说的比较流利——但要理解别人的意思对我来说还十分困难。所以到了日本我会问路,但我听不懂他们的回答!

通常需要一门语言学习得足够好才能开发一个文字体系,并可以使用这种语言进行少量的交流。在你能够实际推广它和用本土人自己的文化教育他们前,那还需要一些年。最后才可以教授本土人如何以他们的文明书写。

当然如果在语言方面你有帮手 —— 经过别人的提醒我们不再使用“语言线人”来称呼他们了,那样显得我们像是在 CIA 工作的一样!—— 你可以通过他们的帮助来学习外语。他们不是老师,但他们会以另一种方式来启发你学习 —— 当然他们也能教你如何说。他们会拿着一根棍子,指着它说“这是一根棍子”,然后丢掉同时说“棒子掉下去了”。然后,你就可以记下一些东西并将其系统化。

大多数让人们有这样做的动力是翻译圣经。但是这只是其中的一方面;另一方面也是为了文化保护。传教士在这方面臭名昭著,因为人类学家认为人们应该基于自己的文明来做这件事。但有些人注定会改变他们的文化——他们可能是军队、或是商业侵入,如可口可乐或者缝纫机,或传教士。在这三者之间,传教士相对来讲伤害最小的了,如果他们恪守本职的话。

LV:许多文字系统有本可依,相较而言你的发明就像是格林兰语…

印第安人照搬字母就发明了他们自己的语言,而且没有在这些字母上施加太多我们给这些字母赋予的涵义,这种做法相当随性。它们只要能够表达出人们的所思所想,使交流顺畅就行。经常是有些 声调语言 Tonal language 使用的是西方文字拼写,并尽可能的使用拉丁文的字符变化,然后用重音符或数字标注出音调。

在你开始学习如何使用语音和语调表示之后,你也开始变得迷糊——或者你的书写就不如从前准确。或者你对话的时候像在讲英文,但发音开始无法匹配拼写。

LV:当你在开发 Perl 的时候,你的语言学背景会不会使你认为:“这对程序设计语言真的非常重要”?

LW:我在人们是如何使用语言上想了很多。在现实的语言中,你有一套名词、动词和形容词的体系,并且你知道这些单词的词性。在现实的自然语言中,你时常将一个单词放到不同的位置。我所学的语言学理论也被称为 法位学 phoenetic ,它解释了这些在自然语言中工作的原理 —— 也就是有些你当做名词的东西,有时候你可以将它用作动词,并且人们总是这样做。

你能很好的将任何单词放在任何位置而进行沟通。我比较喜欢的例子是将一个整句用作为一个形容词。这句话会是这样的:“我不喜欢你的[我可以用任何东西来取代这个形容词的]态度”!

所以自然语言非常灵活,因为聆听者非常聪明 —— 至少,相对于电脑而言 —— 你相信他们会理解你最想表达的意思,即使存在歧义。当然对电脑而言,你必须保证歧义不大。

“在 Perl 6 中,我们试图让电脑更准确的了解我们。”

可以说在 Perl 1到5上,我们针对歧义方面处理做得还不够。有时电脑会在不应该的时候迷惑。在 Perl 6上,我们找了许多方法,使得电脑对你所说的话能更准确的理解,就算用户并不清楚这底是字符串还是数字,电脑也能准确的知道它的类型。我们找到了内部以强类型存储,而仍然可以无视类型的“以此即彼”的方法。

LV:Perl 被视作互联网上的“ 胶水 glue ”语言已久,能将点点滴滴组合在一起。在你看来 Perl 6 的发布是否符合当前用户的需要,或者旨在招揽更多新用户,能使它重获新生吗?

LW:最初的设想是为 Perl 程序员带来更好的 Perl。但在看到了 Perl 5 上的不足后,很明显改掉这些不足会使 Perl 6更易用,就像我在讨论中提到过 —— 类似于 托尔金(J. R. R. Tolkien) 在《指环王》前言中谈到的适用性一样

重点是“简单的东西应该简单,而困难的东西应该可以实现”。让我们回顾一下,在 Perl 2和3之间的那段时间。在 Perl 2上我们不能处理二进制数据或嵌入的 null 值 —— 只支持 C 语言风格的字符串。我曾说过“Perl 只是文本处理语言 —— 在文本处理语言里你并不需要这些功能”。

但当时发生了一大堆的问题,因为大多数的文本中会包含少量的二进制数据 —— 如 网络地址 network addresses 及类似的东西。你使用二进制数据打开套接字,然后处理文本。所以通过支持二进制数据,语言的 适用性 applicability 翻了一倍。

这让我们开始探讨在语言中什么应该简单。现在的 Perl 中有一条原则,是我们偷师了 哈夫曼编码 Huffman coding 的做法,它在位编码系统中为字符采取了不同的尺寸,常用的字符占用的位数较少,不常用的字符占用的位数更多。

我们偷师了这种想法并将它作为 Perl 的一般原则,针对常用的或者说常输入的 —— 这些常用的东西必须简单或简洁。不过,另一方面,也显得更加的 不规则 irregular 。在自然语言中也是这样的,最常用的动词实际上往往是最不规则的。

所以在这样的情况下需要更多的差异存在。我很喜欢的一本书是 Umberto Eco 写的《 探寻完美的语言 The Search for the Perfect Language 》,说的并不是计算机语言;而是哲学语言,大体的意思是古代的语言也许是完美的,我们应该将它们带回来。

所有的这类语言错误的认为类似的事物其编码也应该总是类似的。但这并不是我们沟通的方式。如果你的农场中有许多动物,他们都有相近的名字,当你想杀一只鸡的时候说“走,去把 Blerfoo 宰了”,你的真实想法是宰了 Blerfee,但有可能最后死的是一头牛(LCTT 译注:这是杀鸡用牛刀的意思吗?哈哈)。

所以在这种时候我们其实更需要好好的将单词区分开,使沟通信道的冗余增加。常用的单词应该有更多的差异。为了达到更有效的通讯,还有一种自足(LCTT 译注:self-clocking ,自同步,概念来自电信和电子行业,此处译为“自足”更能体现涵义)编码。如果你在一个货物上看到过 UPC 标签(条形码),它就是一个自足编码,每对“条”和“空”总是以七个列宽为单位,据此你就知道“条”的宽度加起来总是这么宽。这就是自足。

在电子产品中还有另一种自足编码。在老式的串行传输协议中有停止和启动位,来保持同步。自然语言中也会包含这些。比如说,在写日语时,不用使用空格。由于书写方式的原因,他们会在每个词组的开头使用中文中的汉字字符,然后用 音节表 syllabary 中的字符来结尾。

LV:是平假名,对吗?

LW: 是的,平假名。所以在这一系统,每个词组的开头就自然就很重要了。同样的,在古希腊,大多数的动词都是搭配好的(declined 或 conjugated),所以它们的标准结尾是一种自足机制。在他们的书写体系中空格也是可有可无的 —— 引入空格是更近代的发明。

所以在计算机语言上也要如此,有的值也可以自足编码。在 Perl 上我们重度依赖这种方法,而且在 Perl 6 上相较于前几代这种依赖更重。当你使用表达式时,你要么得到的是一个词,要么得到的是 插值 infix 操作符。当你想要得到一个词,你有可能得到的是一个前缀操作符,它也在相同的位置;同样当你想要得到一个插值操作符,你也可能得到的是前一个词的后缀。

但是反过来。如果编译器准确的知道它想要什么,你可以稍微 重载 overload 它们,其它的让 Perl 来完成。所以在斜线“/”后面是单词时它会当成正则表达式,而斜线“/”在字串中时视作除法。而我们并不会重载所有东西,因为那只会使你失去自足冗余。

多数情况下我们提示的比较好的语法错误消息,是出于发现了一行中出现了两个关键词,然后我们尝试找出为什么一行会出现两个关键字 —— “哦,你一定漏掉了上一行的分号”,所以我们相较于很多其他的按步照班的解析器可以生成更好的错误消息。

LV:为什么 Perl 6 花了15年?当每个人对事物有不同看法时一定十分难于管理,而且正确和错误并不是绝对的。

LW:这必须要非常小心地平衡。刚开始会有许多的好的想法 —— 好吧,我并不是说那些全是好的想法。也有很多令人烦恼的地方,就像有361条 RFC [功能建议文件],而我也许只想要20条。我们需要坐下来,将它们全部看完,并忽略其中的解决方案,因为它们通常流于表象、视野狭隘。几乎每一条只针对一样事物,如若我们将它们全部拼凑起来,那简直是一堆垃圾。

“掌握平衡时需要格外小心。毕竟在刚开始的时候总会有许多的好主意。”

所以我们必须基于人们在使用 Perl 5 时的真实感受重新整理,寻找统一、深层的解决方案。这些 RFC 文档许多都提到了一个事实,就是类型系统的不足。通过引入更条理分明的类型系统,我们可以解决很多问题并且即聪明又紧凑。

同时我们开始关注其他方面:如何统一特征集并开始重用不同领域的想法,这并不需要它们在下层相同。我们有一种标准的书写 配对 pair 的方式——好吧,在 Perl 里面有两种!但使用冒号书写配对的方法同样可以用于基数计数法或是任何进制的文本编号。同样也可以用于其他形式的 引用 quoting 。在 Perl 里我们称它为“奇妙的一致”。

“做了 Perl 6 的早期实现的朋友们,握着我的手说:“我们真的很需要一位语言的设计者。””

同样的想法涌现出来,你说“我已经熟悉了语法如何运作,但是我看见它也被用在别处”,所以说视角相同才能找出这种一致。那些提出各种想法和做了 Perl 6 的早期实现的人们回来看我,握着我的手说:“我们真的需要一位语言的设计者。您能作为我们的 仁慈独裁者 benevolent dictator 吗?”(LCTT 译注:Benevolent Dictator For Life,或 BDFL,指开源领袖,通常指对社区争议拥有最终裁决权的领袖,典故来自 Python 创始人 Guido van Rossum, 具体参考维基条目解释)。

所以我是语言的设计者,但总是听到:“不要管具体 实现 implementation !我们目睹了你对 Perl 5 做的那些,我们不想历史重演!”真是让我忍俊不禁,因为他们作为起步的核心和原先 Perl 5 的内部结构上几乎别无二致,也许这就是为什么一些早期的实现做的并不好的原因。

因为我们仍然在摸索我们的整个设计,其实现在做了许多 VM (虚拟机)该做什么和不该做什么的假设,所以最终这个东西就像面向对象的汇编语言一样。类似的问题在伊始阶段无处不在。然后 Pugs 这家伙走过来说:“用用看 Haskell 吧,它能让你们清醒的认识自己正在干什么,让我们用它来弄清楚下层的 语义模型 semantic model 。”

因此,我们明确了其中的一些语义模型,但更重要的是,我们开始建立符合那些语义模型的测试套件。在这之后,Parrot VM 继续进行开发,并且出现了另一个实现 Niecza ,它基于 .Net,是由一个年轻的家伙搞出来的。他很聪明,实现了 Perl 6 的一个很大的子集。不过他还是一个人干,并没有找到什么好方法让别人介入他的项目。

同时 Parrot 项目变得过于庞大,以至于任何人都不能真正的深入掌控它,并且很难重构。同时,开发 Rakudo 的人们觉得我们可能需要在更多平台上运行它,而不只是在 Parrot VM 上。 于是他们发明了所谓的可移植层 NQP ,即 “Not Quite Perl”。他们一开始将它移植到 JVM(Java虚拟机)上运行,与此同时,他们还秘密的开发了一个叫做 MoarVM 的 VM ,它去年才刚刚为人知晓。

无论 MoarVM 还是 JVM 在 回归测试 regression test 中表现得十分接近 —— 在许多方面 Parrot 算是尾随其后。这样不挑剔 VM 真的很棒,我们也能开始考虑将 NQP 发扬光大。 谷歌夏季编码大赛 Google Summer of Code project 的目标就是针对 JavaScript 的 NQP,这应该靠谱,因为 MoarVM 也同样使用 Node.js 作为日常处理。

我们可能要将今年余下的时光投在 MoarVM 上,直到 6.0 发布,方可休息片刻。

LV:去年英国,政府开展 编程年活动 Year of Code ,来激发年轻人对编程的兴趣。针对活动的建议五花八门——类似为了让人们准确的认识到内存的使用你是否应该从低阶语言开始讲授,或是一门高阶语言。你对此作何看法?

LW:到现在为止,Python 社区在低阶方面的教学工作做得比我们要好。我们也很想在这一方面做点什么,这也是我们有蝴蝶 logo 的部分原因,以此来吸引七岁大小的女孩子!

Perl 6 : Camelia

“到现在为止,Python 社区在低阶方面的教学工作做得比我们要好。”

我们认为将 Perl 6 作为第一门语言来学习是可行的。一大堆的将 Perl 5 作为第一门语言学习的人让我们吃惊。你知道,在 Perl 5 中有许多相当大的概念,如闭包,词法范围,和一些你通常在函数式编程中见到的特性。甚至在 Perl 6 中更是如此。

Perl 6 花了这么长时间的部分原因是我们尝试去坚持将近 50 种互不相同的原则,在设计语言的最后对于“哪点是最重要的规则”这个问题还是悬而未决。有太多的问题需要讨论。有时我们做出了决定,并已经工作了一段时间,才发现这个决定并不很正确。

之前我们并未针对并发程序设计或指定很多东西,直到 Jonathan Worthington 的出现,他非常巧妙的权衡了各个方面。他结合了一些其他语言诸如 Go 和 C# 的想法,将并发原语写的非常好。 可组合性 Composability 是一个语言至关重要的一部分。

有很多的程序设计系统的并发和并行写的并不好 —— 比如线程和锁,不良的操作方式有很多。所以在我看来,额外花点时间看一下 Go 或者 C# 这种高阶原语的开发是很值得的 —— 那是一种关键字上的矛盾 —— 写的相当棒。


via: http://www.linuxvoice.com/interview-larry-wall/

作者:Mike Saunders 译者:martin2011qi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

简述:里程碑式的 TPP 协定已经由美国商务部长在亚特兰大正式公布。但是这个协定引发了一系列的关于其侵犯互联网原则的严重关注。

跨太平洋伙伴关系协定 The Trans-Pacific Partnership deal ,也被称为 TPP,已经推出了几年的时间,其被称为二十一世纪的将贸易自由化推向巅峰之作,它被指威胁到互联网主权以及万维网的自由。TPP 的反对者们质疑在该协议的所有领域,包括信息共享原则在内都贯穿了秘密谈判。

周一在亚特兰大新闻发布会正式宣布的 TPP 协定据说将涵盖全球40%的经济体量,且其宣称将创建全球统一的经济阵营。

在该协定中提议,企业通过电脑系统违反信息披露将视为违法,这意味着在这个方面,不会有更多的泄密消息,也不会有任何负责任的新闻报道了。

对于初创公司和个人而言,最头痛的是 TPP 要求内容提供商,比如 Youtube 或者 Facebook 即便收到一条投诉也要对内容进行下架处理。这将在网络上加大一部分企业的垄断砝码,和在最少120年内让内容拥有者可以因为侵犯版权扼杀掉短期革新者。

而且,ISP 也被要求在 TPP 协定之下监控用户活动,以在新的网络法之下侦查非法举动,从而让你不能随便说话。

大多数严格的条款都来自美国产权保护法,从而会成为协定加入国的噩梦。

美国国会曾再三的被技术专家要求要协定透明化,但并未起效。

请持续关注 fossBytes 关于 网络侵犯法律 Internet infringement laws 方面的内容。在下面的留言栏告诉我们你关于 TPP 协定的看法。