当前位置: 首页 > Linux

YoungHacker的畅谈

时间:2023-04-06 01:40:16 Linux

自由软件简介《天下没有免费的午餐》。这句话只对了一半。对于软件行业,或者更准确地说,对于自由软件行业,情况并非总是如此。商业软件公司正在接管我们——普通计算机用户甚至专业程序员——的大脑,在我们的潜意识中,似乎只有大公司才是好的。以下是一些场景:?我倾向于通过付费在线课程、系列视频或文章来学习技术,而不是阅读软件附带的免费文档或免费外语甚至中文标准,因为前者更容易。?任何免费的东西都是不好的。只有付费的东西才能保证高质量。?除非有特殊用途,否则没有人会免费开放优质资源。?大公司的软件比一群人为了好玩而编写的软件更稳定、更值得信赖。绝大多数普通用户会认为所有这些都是正确的,甚至一些具有几年经验的“高级”程序员也是如此。他们宁愿购买别人的IDE进行开发,也不愿使用轻量级、免费的Vim,这无疑是大多数UNIX/Linux程序员的必备工具。这一切都归功于:1、精彩绝伦的商务软件自Windows系统成功以来,成功的商人比尔·盖茨受到了各地各界人士的“崇拜”。一方面可能是因为他太有钱了,另一方面可能是因为他做了这样一个系统(网上很多人都说Windows系统是比尔盖茨设计实现的)。然而,当“伟大”的窗口系统死机和蓝屏时,大多数人都在咒骂自己的电脑:“好破的电脑!该死的!”,而不是系统(顺便说一句,也有人把“Windows”称为电脑)。太奇妙了。纵观无数的Linux开发者(甚至包括LinusTorvalds),他们都没有被这样对待过。软件是值得付费的,甚至自由软件大师RichardStallman也不否认这一点。但是你真的确定那些蹩脚的“这个应用程序没有响应”的东西值这个钱吗?反正我不这么认为。“某窗口系统”还有一个很神奇的地方。它似乎支持POSIX。毕竟,这不是设计新的32位系统的目标之一吗?(当然有人会告诉我应该是ISOC)其实好像只支持几个系统调用,剩下的几乎都是标准库函数(strlen之类的),连最基本的都没有POSIX风格的开放...与支持各种标准的Linux对比。支持全套POSIX(流除外),性能测试也不错(当然“某窗口系统”的裸机测试也不错,注意是裸机),还有引以为豪的是优秀的进程创建和文件系统。与此相比,window系统的文件系统和进程创建就差强人意了。我知道有些人又要说了:我们的安全认证等级(A1的东西)比你们高!这是不可避免的,传统的UNIX从来没有在设计时考虑到这一点,用户被抽象为同一组、所有者和其他(当然,root始终拥有权限)。不过在我个人看来,这已经足够了,毕竟我没见过多少用户创建两个用户,甚至用Administrator或者一些愚蠢的字符作为名字,比如“abc123”。我们再来看看这个软件。2.设计理念(当然不是“某一个窗口系统”)软件很多,包括IE这样令人头疼的浏览器(哦不,已经弃用了),各种没人接触过的游戏,还有一大堆更不用说那些从来没有人接触过的配件,这些都是和系统一起安装的,必须手动卸载,非常麻烦。还有PowerPoint这样好用的“高级软件”,一个软件包含了无数当然很贵。了解linux的同学大概已经知道我要说什么了,是的,我要说的是不同系统下的设计理念,这就更差距了。LinuxLinux下各个软件的平均大小都在10MB以内,并且各有独特的分工。wc是统计文本文件,cat是显示文件内容(就这么简单),grep就是在文件中查找,类似这样的软件数不胜数。利用UNIX的设计哲学之一——流水线,可以轻松统计出一个文件中包含Linux字样的行数(Bash不是很熟练,请原谅我):$grep"Linux"foo|wc-l在哪个操作系统中?您应该首先用记事本打开该文件,将其复制到另一个.doc文件,然后找到“查找”按钮并按下它。可能你还需要滚动到底部看看到底有多少行……再难一点呢,看看当前目录下所有后缀为.txt的文件中有多少行包含Linux?对于UNIX,小菜一碟:$find./-name"*.txt"|xargsgrep“Linux”|wc-l在另一个“伟大的系统”上呢?我觉得不需要再举更多的例子了,大家可以看看这两个系统哪个设计的更好。还有人会说,这个系统本来是给程序员用的,那个系统本来是给普通用户用的。的确,你一个程序员,为什么还要用“某个窗口系统”呢?3.“真幼稚”曾经在一个复古群聊里,有这么一个大佬引用了我对他的评价:这个人身高八(划掉,七)尺,还自称很帅,还经常用“精忠”“帅哥”,白手起家。喜欢当老师,努力称自己为“全栈老大”,但其实不知道汇编和C是什么。他说:“只要学习什么,就能让我rich。”因为没学过C,见人问问题,往往是为了节省流量,“..”字微回,意味深长,我不和他交朋友,因为还有其他原因:那个人说:“C是垃圾”,我对他说:“你是垃圾中最棒的”,我又羞又怒地被群里除名了,回来看,它的语言也被撤了.他还有一句标语,“真幼稚”,用优雅的文言文写的,他学编程只是为了发财。所以对于开源,自由,东西……你可以想象他的反应。开源是幼稚的吗?我不这么认为。正如RichardStallman在演讲中所说:软件就像一个食谱。一开始,你从朋友家弄了一份,回到家后,你开始思考:是放点糖还是放点胡椒粉?会没事的。愿意钻研的人,可以把菜做得更好吃,更合一些人的口味,然后再传给别人。所有人的美味佳肴。(非原文,演讲具体内容见《若为自由故》)商业软件是做什么的?软件或食谱。如果一个厨师告诉你:“食谱是保密的”,你只能吃他的菜,不能自己做。餐厅的食物很好吃,不错。但是没有人知道盘子里还有什么。如果你试图把食谱给别人,他们就会把你关进监狱并称你为“小偷”。这是现实。更重要的是?厨师给你的食谱里塞满了计时器。你可以做30次食谱,当你达到配额时,他们会要求你付款。未支付?菜谱会自动销毁,上面还会写几个大字:此人是个穷人。软件是值得付费的。我一再强调,一个优秀好用的软件是值得欣然付出的,再好的软件也会让我们塞钱捐给它的作者。然而,我从未见过价值五千的软件,也没有理由花那么多钱购买一个设计糟糕的微内核,整个系统都依赖毫秒级速度的IPC来工作。如果UNIX值5000,我认为它没有错,因为UNIX是这个星球上设计最好的系统之一。“最好的系统”不是废话。比较UNIX的衍生产品之一,Linux,比较日常用户的体验。Firefox是最慢且最占用内存的启动程序,只需几秒钟并单击鼠标即可。那个系统,应该不用多说了吧……4.这就是系统的原因吗?前面的内容都是在讲linux和“某window系统”。除了金钱,两者都是地球上最好的操作系统。Linux和UNIX主打简洁,而“某窗口系统”主打用户体验和审美,裸机性能测试也很不错。但是在这里,我们要讨论的是,是什么让窗口系统在日常使用中如此缓慢?设计首先要说的是设计。微内核设计非常优雅,我们无法反驳。不过好像并没有给内核减轻多少负担,毫秒级别的IPC到处都是。它的内核太小,连系统调用都放在动态库里,导致多次relink无法正常启动应用。它的窗框也不理想。回调一直是POSIX试图避免的事情。标准中几乎没有关于回调的内容,但是异步、poll、select之类的东西更符合人的逻辑。至于它,窗口框架的所有消息(thatMsg)都是通过回调处理的,这导致响应速度不尽如人意。一个小窗口点击,移动就成了一个事件。转向UNIX/Linux,它的窗口框架类似于信号。传统信号通过signal()设置,而现代信号通过sigaction()设置。无论界面如何不同,都有一个“默认操作”,即SIG_DFL。所以如果让我修改窗口系统,我会先说:“请添加一个RegisterMsgs调用,为每个msg提供一个处理程序,并支持设置默认值和忽略操作!”聪明的用户可以看到一系列“某某安全管家”的应用。在XP时代,这个是必不可少的,他可以防止你的系统被侵入。不过,现在...2202,还是有无数聪明的用户(甚至程序员)在尝试安装,七八台电脑同时安装也很正常。我曾经在自己的8.1和10上重装过系统,没有安装任何电脑管家,性能至少提升了两倍,与Linux相差无几。当然,我没说“某某管家”没用。它们实际上非常有用,无数安全人员编写了它们,但现代内核不再需要受到如此严密的保护,所以最终,这就是早期系统如此糟糕的原因。但是,“某某安全快速浏览器”的性质就完全不同了。从来没有人需要这样的应用程序,它们实际上是外壳。编写这种应用程序的人与骗子完全一样。通过关闭它们并添加一些广告,它们就变成了自己的“国产”浏览器。5、自封的窗口系统综上所述,商业系统被各种烂后台程序搞得一团糟,之所以总喜欢在后台,基本都是商业原因——看你的右下角那些小图标,应该比在桌面上更显眼吧!同时,后台还必须放置计算时间、催促付款的软件。也就是说,可怜的商业窗口系统已经告别了自己——层出不穷的自由软件开发者。6、以后随着计算机科学的发展,越来越多的大佬从小学五六年级开始学编程(Calvinlin哥甚至三四年级就开始玩shell了,我还在玩cmd.exe)。随着技术的发展,一些人会毫不犹豫地选择切换到Linux,而另一些人会继续选择使用带有许多IDE的“某些窗口系统”。但无论是哪种系统,相信这些年轻的黑客们都会毫不犹豫地投入开源软件,为世界贡献一批又一批的优质开源软件。追求自由是孩子的天性,不是吗?届时,GNU工程和Linux内核将得到长足发展,向世界展示开源的魅力!