unix操作系统(unix操作系统采用星型文件系统)
国产计算机操作系统布局根系统,其实最令人担忧的还不是桌面系统的国产化。
现在最迫切需要的是国产服务器操作系统国产化,或者说服务器操作系统国产化的根系统更要布局。国内的服务器基本上被rhel或ubuntu或少量的windows Server及unix占据,假如系统爆出漏洞,这些背后的商业化公司不给你修复漏洞你怎么办?
我也看到很多人在吐槽说deepin或者一些其他什么优麒麟等等,说他们并非纯国产化之类,如果外行人说说这可以理解,何必跟他们争辩,毫不夸张的服务器操作系统现在真的成气候有生态的只有windows和linux(各种发行版)另外就是少量的Unix,所以哪些说纯国产化,另起炉灶不现实,而且时不我待,基于linux开源内核打造是目前最能行得通的方案。
#读书笔记# 《Unix传奇》
现在要说一下开发操作系统所使用的编程语言了。如果说操作系统是一座金碧辉煌的大厦,那么编程语言就是用来建造它的工具。
在上世纪七十年代初期,贝尔实验室的大神们是为此困扰不已的,因为他们没有称手好用的工具。其实IBM早在1964年就创建了PL/I,用作系统级的编程语言。但因为它也是中了“第二系统效应”的毒,包括了太多特性,以至于复杂难用。
后来剑桥大学教授马丁·理查兹设计开发了一款名为BCPL(Basic Combined Programming Language)的系统编程语言。它比PL/I要简单得多,因此Unix小组的成员们还能凑合着用。
但肯·汤普森这样的大神是会止步于此的,基于PDP-7的环境,他自己又重新设计并开发了一门新的语言,称之为B语言。从语言特性上来看,它和BCPL是非常接近的。
当性能更好的PDP-11计算机到货以后,好伙伴丹尼斯·里奇又对B语言进行了改造,使之能将新机器的性能发挥出来。这门语言被称为“NB”,它是“New B”的缩写。
我想作为一名中文阅读者,你此刻一定忍不住响亮地念了出来,然后一种爽快感令身心通透。很好,我的感觉也是这样。
这门叫“New B”的语言在后来经过改进,正式定名为“C”语言,人类历史从此翻开了新的篇章。这可以说就像普罗米修斯从太阳神的马车上取得火种之后,将之献给人类一样伟大。
这不是我在唬人吹牛,C语言的出现,将系统编程语言从石器时代带入了铁器时代。C语言简单易用,而且功能强大。首先就用在了开发新版本的Unix,这大大地提高了效率,还保证了稳定性。
其次,C语言使得系统移植变得轻而易举了。在早先的年代,硬件的架构是千差万别的,在不同的机器上如果要开发相同的功能,就得写出两套代码来。良好的可移植性,这也是Unix能够流行起来的重要原因。
最后,也是最重要的是,C语言在贝尔实验室之外获得了广泛的使用。这让全世界的专业人士以及业余爱好者们可以共同为Unix开发软件,从而形成了一个强大的生态环境。
在上世纪九十年代初的芬兰赫尔辛基大学计算机系,一位长着大鼻子的自卑青年,就是用C语言开发出了改变世界的Linux操作系统,其实Linux本身也是遵循Unix系统调用接口规范的变种。这位青年就是Linus Torvalds。
即使直到今天,C语言也是系统编程领域的首选语言。这也是我混迹于江湖十几年,吃饭用的家伙。其实就是昨天我还在写C程序代码,在此向肯·汤普森与丹尼斯·里奇两位祖师爷致敬。
C语言,真的很“New B”。
UNIX传奇:历史与回忆
PowerShell的发明者是Jeffrey Snover。他解释PowerShell为什么传递的是对象,根本原因是源于Windows和类Unix的系统核心设计有很大的不同。
类Unix系统本质上是File-based,而Windows是API-based,所以在Linux上基本上都是以文本文件形式进行系统配置,而Windows上很少采用这种方式。
在Linux上很优秀的工具像awk、grep、sed等移植到Windows上后并不好用,为什么?Windows的管理配置方式是Registry、WMI、Active Directory,所以这些工具到了Windows平台并没有发挥出它们的作用。这个时候PowerShell出来了, 并且以.NET Object在管道中传输。
最后总结下,PowerShell 和Bash都有其自身适应的范围, 这是个相对的概念。只能说,在以API为导向的Windows平台上,PowerShell传递Object的方式的确会更好点。
FLTK是一款C++轻量级GUI开发库,适合于C++学习和应用于嵌入式设备界面开发,整个代码包大小不到5M。
1.支持的操作系统
UNIX/Linux,Windows,macOS
2.库文件小到你可以直接采用静态方式链接,当然动态链接也是支持的
3.提供了界面开发工具FLUID
4.Bjarne Stroustrup大作《Programming-Principles and Practice Using C++》第二版所采用的GUI开发库
项目地址: 网页链接
man在Linux/Unix系统中起着至关重要的作用,没有man你就没有办法得到软件使用或开发文档信息。但是man手册的内容实在是TLDR了,要不是没有其它资料我是实在不想拜读这样的文档。
今天居然遇到了一个工具,叫做tldr pages。TLDR是“Too Long;Didn't Read”的简写,这个tldr pages就是man pages的精简版,它专门为了解决“又长又臭”的man文档,有了tldr就再也不必为了找个命令而使用man犯愁了。
下面为tar命令的tldr和man文档内容,对比一下就知道区别了。
项目地址:网页链接
Terminal.Gui是跨平台终端UI工具集合,使用C#编写,为Windows、Linux/Unix和Mac系统上工作的.NET构建丰富的控制台应用程序,支持彩色和黑白色终端程序。虽然只是一个控制台库,但支持了键盘和鼠标输入(包括拖放)。
此外,Terminal.Gui支持绝对布局和创新性动态计算布局,后者可以轻松地布局控件并启用动态UI。它对通过剪贴板类提供的文本可以进行剪切、复制和粘贴,支持任意视图。高级应用程序功能Mainloop支持处理事件、空闲处理程序、计时器和监控文件描述符。它还支持使用响应式扩展并展现出了强大的代码可读性以及应用MVVM模式和ReactiveUI数据绑定的能力。
项目地址:https://github.com/gui-cs/Terminal.Gui
开源协议:MIT license





