有个比较隐蔽的问题似乎很少答案接触到:
GUI界面中,版本之间的兼容性是得不到保证的:例如说你现在用惯了vc6(学校sb老师要求的),假定你在4年的大学里,已经把那个老掉牙的vc6用得无比炉火纯青,任何功能闭着眼睛都能准确地用鼠标或者快捷键打开相应的设置对话框。现在你毕业了,公司的开发环境是vs2019,要设置同样的参数,你能不能第一次就能保证找到?又过几年,你公司要求你把这个项目迁移到mac/ios上,那个sb的apple,要求你必须用xcode才能编译。那这时,你之前在vs系列上的所有无比熟练的ide/gui操作技巧和习惯,又有多少能迁移到xcode上?
而vim/emacs等编辑器,在版本间迭代时,只要配置文件不动,几乎可以做到整个操作习惯完整迁移。而且,不同平台之间迁移,操作习惯也基本上能得到保证,这就在很大程度上可以节约迁移平台时的学习和适应成本。
这个问题的本质是:
基于CLI/命令行的操作可以很便捷的通过脚本/配置进行灵活的组合和固化。这使得很多本来是非常复杂的命令/操作/判断,都可以得到极大程度的简化。而且只要脚本/配置的名字或者什么关键字不发生变化,那么它就可以持续延续下去。类似的,新功能的添加,只要名字/关键字不发生冲突,也可以无缝的引入而不引发任何改变。如果用户用不到这个新功能的话,甚至可能干脆就对此毫无感知。
而任何GUI程序,不管前后版本之间如何用心设计仔细研究,都很难保证在两个版本间保持绝对的操作兼容性。如果跨越几个版本,那么可能连不少核心功能的操作或者位置排布都可能会有不可避免的变化。
我发现一个很有意思的现象。
说到GUI操作方式用于开发,就象很多人在回答里说的,GUI操作方式在简单的情况下还行,复杂点的情况下效率难以提升,命令式编辑器、文本编辑的方式,效率反而更能有稳定的保障。
但说到WEB应用,很多程序员认为桌面软件就该死掉了,以后所有应用都用浏览器,所有工作都用WEB应用就够了。是真认为其他办公人员不需要“高效地敲键盘”了吗?
桌面应用的操作,设计得好的话,直接敲键盘就做完所有事了,对比在浏览器中必须鼠标和键盘一起用的方式,和把vim拿来和GUI编辑器对比是一样的情况啊。我们很少有看到纯用键盘输入或对此支持得很贴心的网页吧?
至少财务人员也是很需要有能“高效地敲键盘”的软件的。
所以这个问题问“为什么”,因为他们有过体会,才得出这样的结论。对于他们没体会过的(比如象财务人员一样录一堆山一样高的凭证),他们是不会得出这样的结论的,就只会想当然。
最后一更后 的 一更,因为我不得不分享这个视频。
为啥程序员喜欢 Vim 这类编辑器?因为这玩意是 programmable,程序员的编辑器不能程序员操作合适吗?翻 qiang 去看一下这个视频,你就知道 Gui 编辑器永远不可能超越 Vim 或者其他 可编程编辑器。。。。谁在乎 写小说,程序员要写程序,包括写程序也是写程序。
最后一更:
我杠不动了。写这么长的东西,没人看,找个 Coner Case 来杠。
强调一下:答案写的清清楚楚 - Vim模式的优势是在编码的场景下,就是你平时写程序会用到的操作;脱离场景谈优势,没有意义,Vim被创造出来就是处理计算机相关的数据和文件
以下是原答案的引用:
比如你用VScode,如果你开了Vim模式,那么他跟VIM没有特别多区别(当然,肯定还是有区别的),而且GUI的vim mode会带来一些优势,比如一些操作用鼠标还是比较方便的。
你就会看到描述和可重复的重要性和高效。特别是对于程序员,我们如何高效的操作代码块,修改代码块,浏览代码块,这些功能,没有任何一款编辑器可以超越Vim的编辑逻辑。当然你不需要用命令行的Vim,但是Vim 模式才是高效的关键。
结论:GUI最牛逼,千万别用Vim,会拖慢你写程序的进度。
---
其实题主有两个问题:
这两个问题其实有密切的联系。首先第一个问题,命令行确实比GUI更加高效,秘密在哪里呢?在于可重复性和可回溯性 + 容易传播。
命令行的优势并不是看起来很酷,而是他的所有操作都可以被 文本化,即你可以通过一串简单的文本描述你想进行的操作,比如 `cat some.txt | grep hello`,这段东西可以被存成一个可执行bash文件,反复执行,而且放在不同的电脑上,都可以执行(满足一些前置条件当然),这就是可重复性;而这个文本可以被版本控制软件,如Git,追踪并记录历史变动,也就是说,你可以回溯到任何一个你Commit过的版本,比如你就该了命令,但是错了,你就可以很方便的回滚,这就是可回溯。
就这两个东西是GUI不具备的,而这两个东西就是高效的关键所在。现在连基本的infrastructure配置都已经文本化了,你不会指望用一个GUI去配置上百个K8s节点,然后发现你点错了一个设置,无法回滚。
当然,你也可以用一些工具把鼠标操作文本化,但是这就有点舍近求远了。不过在某些场景是必须的,比如一些前端的测试,Selenium
回到第二个问题,命令行编辑器不一定比GUI编辑器高效,但是 命令行编辑器,我那VIM举例因为我比较熟悉,的优势并不在于是不是命令行,而是他的编辑逻辑。比如你用VScode,如果你开了Vim模式,那么他跟VIM没有特别多区别(当然,肯定还是有区别的),而且GUI的vim mode会带来一些优势,比如一些操作用鼠标还是比较方便的。
那么命令行编辑器,比如Vim,的优势在哪里呢?其实还是可重复性 + 描述做什么而不是怎么做。特别对于编程,编程的过程大部分时间并没有在输入代码,而是编辑代码,而Vim(Emacs)的特长就是编辑,而且是可重复的编辑。
我举个例子:
a is a b is b c is c
你想把上面的文本变成:
- a is a - b is b - c is c
你会怎么做?在一般的编辑器中,你只能移动光标到行首,然后插入 - 。VIM会怎么做?C+v
竖向选择,3j
选择3行,I
插入, -
输入,会车。优势在哪里呢?想一下如果你有30行这样的东西,你要做30次插入么?不,告诉编辑器你要编辑的区域,然后做一次。
另一个例子,我想要删除双引号内部的东西,这个操作在编程中非常常见,vim 怎么做?只需要 di” (delete in "" 就是这么优雅,如果把上下左右+删除比作汇编语言,VIM就是Haskell,就是这么High level) ,没错,就三个按键,不需要鼠标,而且不论双引号里面有多少内容都会被删掉,而且精确控制。感受一下用鼠标?如果内容很长,你就很难受了……怎么点都点不准……
我再举一例:
a is a b is b c is c
你想把开头的 abc变成 hi
hi is a hi is b hi is c
你怎么玩?vim怎么办?一般的编辑器怎么办?你就会看到描述和可重复的重要性和高效。特别是对于程序员,我们如何高效的操作代码块,修改代码块,浏览代码块,这些功能,没有任何一款编辑器可以超越Vim的编辑逻辑。当然你不需要用命令行的Vim,但是Vim 模式才是高效的关键。
以上。
欢迎关注泛程序员,分享量化交易、编程小知识。
这不是信仰,而是客观事实。
而且,事实上,确实就是有一代又一代的人不信这个邪,所以有一代又一代的gui开发工具被开发出来。然而,三四十年过去了,愣是没有一款GUI开发工具能在正规商用开发领域占据效率优势。
所以答案其实很简单:无数的产品经理与程序员都有过与你差不多的想法,也发明了无数个gui开发环境,但能打的一个都没有。哪怕是用来做界面的工具,升级了一套又一套,最终,主流的界面布局方式依然还是「写代码描述」。
android studio虽然提供了一个图形化的界面编辑器,但如果谁能直接用这玩意不用xml代码就写出像素级符合设计师要求的布局,我愿称之为神人。但凡你的项目有独立设计师出图并且对布局精确度有合规要求,你就必然只能去用xml文本编辑,而放弃用图形界面布局。
有的人甚至说到scratch编程。我这么断言,觉得这玩意好用的,恐怕只是没有真正用它写过一个哪怕稍微中低等复杂度程序的云开发者。
为了辅导参赛参赛选手,我曾经用scratch写过一个五子棋程序,可以说是被scratch写代码的低效率惊呆了。用正规语言非常简单就能实现的布局算法与ai,用scratch恐怕得让你手搓鼠标搓出泡。可以说是对程序员身心的极大摧残。
程序员们是如此的抵制uml,抵制画流程图,正因为这些工作往往需要用到低效的GUI制作工具。而「用写代码的方式直接画uml图画usecase图」的工具被创造出来之后,完全是重新定义了整个文档创作流程。
如果感性的认知,就到上边为止了:客观事实已经雄辩的证明了,没有人做出了效率比文本输入更高的图形化编程方式,至少目前没有。
理性认知呢?这就更简单了,gui的表达能力太有限。
主键盘区有47个可见字符,加上上档键一共是94个。一个普通码农的打字速度达到一分钟300字符(折合50~60单词wpm)非常容易,而这一分钟就制造出了天文数字的组合变化:94的300次方。
鼠标呢?鼠标可以对现有项目进行选择,在比较熟练的情况下,一眼看清楚满屏的20个选项并进行精确点选平均花1秒不过分吧?一分钟可能输入的组合变化,只有20的60次方。两者相差了无数个级别,gui编程的表达能力,很明显与文本输入存在极其巨大的差距。
以上就是大致情况,你可以不相信,正如无数前仆后继的人们一样,冲进gui编程这个坑,然后黯然退场。最终,就会意识到,gui的低效导致了它绝对不可能成为主力程序员的编程方式,顶多替代一些休闲与教育用途。
主力的编程方式一定是个文本框来写代码而不会用图形gui拖放,至于这个文本框用独立编辑器呈现还是用某个ide的内置编辑器来呈现,这是没有本质区别的。
一大早起来真是笑死我了。
由于老头环空前的热潮,以及B站特有的UP主靠制作视频吸引流量转直播的模式,导致很多有人气但完全没有魂系列经验的主播在播这款游戏。比如某幻、瓶子。
(就是一开始制作视频是主业,直播是兼职,甚至是乐趣兴趣,到直播为主,制作视频反倒成了兼职。这种现象在游戏区特别明显。)
这就很有节目效果了,我看几个有名气的主播,都是重复被虐,平均活不过5分钟。真正是在哪里跌倒就从哪里跌倒。
很多在我们这些老玩家看来常识性的东西,对于他们来说完全不存在的。
盾反这种就不提了(其实我也不会),连二人转、回合制、推图都不懂。在大型地牢里不想打小怪,一个劲往前跑,结果变成开火车;当着怪物的面喝药=白喝;开宝箱被怪物背刺;以为学了法术就是法爷了,结果被几只鸟打得抱头鼠窜。
然后另一边,那些原本有魂系列经验的主播,就吃了刻板印象的亏。觉得自己有技术有实力,也不练级就顺着主线硬钢。就比如一上来的野外精英太阳骑士,要么你死要么我亡,绕路是不可能绕路的。
太阳骑士都还好,毕竟王老菊都能杀。
但没有等级,没有血量,没有伤害,硬钢噩兆。
真当噩兆快慢刀是假的,自己打几次就能盾反了?而且老头环这次砍了盾反在BOSS战中的作用,要反三次(二次)才能触发处决。
结果被虐3000遍,又不好意思去练级,尬在那了。
老头环是不是玩家的盛宴我还不知道(买了游戏,昨天也预下载了,结果今天起来发现那个盘满了……正在重新下载,下载完了又发现,我的电脑只有8G内存……),但肯定是不少主播的灾难、观众的盛宴。
当然,我也知道有些主播直播受罪是搞节目效果,但我也是真看到有主播被气到下播了。
另外一点,老头环这次其实是以探索为主要玩法。
B站UP主老戴今天专门做了一期视频讲解,想要玩好、玩轻松,就是尽可能的探索地图,拿物品、刷等级。而不是走到哪杀到哪,打不过硬去打。
就比如第一个剧情BOSS前,大地图上有的是小型地牢,野外精英,要把图清完了再去打噩兆,真跟打弟弟一样。(收回我的话,40级30血20耐20敏+3打刀7瓶奶,打了7次才过。前三次就是纯背板,后三次有点贪,经常血瓶白喝,最后一次基本掌握出手时机,就硬耗过去了。)
其实魂系列游戏特别吃角色强度(等级、装备),一些小怪你一刀砍死和一刀残血,完全就是两种难度。打BOSS,你挨一下就要喝药,和挨两下才需要喝药也是两倍的差距。
不过按照这么个玩法,的确没有什么节目效果。
讲真,还真就是看那些新手主播无能狂怒最有节目效果。
至于游戏本体,如今我也的确是玩上了,总体上来说符合我的期待。
作为一个中年人,我其实是在看了老头环试玩视频后才接触魂系列的。
原因有2,一是手残反映慢,玩这种游戏非常苦手;二是,我其实不太喜欢魂系列那种压抑的黑暗风格。
但老头环作为开放世界,虽然依旧以压抑阴郁为主,但也有光明广阔的场景。比如一开始做完新手指引推门而出的那一刻。
至于在难度与操作方面,远程技能的实用化,召唤物的存在,以及跳砍与伪盾反的出现,真的能够解决很多问题。
只是看你愿不愿意当一个“卑鄙的褪色者”。
远程技能包括法术与射击。我玩的武士,初始给的长弓非常给力。尤其记得推一座城堡图的时候,一开始不清楚套路,进入城堡被满地的炸药桶与两个放火球的法师直接秒了。复活后掏出长弓,一剑封喉,解决掉法师无伤过了。
还有初期的一个地牢,一个场景墙上爬着的与左右墙角蹲着的类似地精的怪物,近战5-6刀才能砍死。
第一次去直接围殴致死。
第二次,用弓箭一只只引过来,很轻松就过了。
至于近战武器,我是非常推荐初期见完老婆就能开箱子拿到的君王大剑。
这把武器虽然攻速低,成长性也低,但在初期真的非常实用。
尤其是在跳劈方面。
这一作跳劈虽然强但也看武器,比如武士上来给的打刀就属于跳劈对空,跳起来横着劈一刀,有时候都打不到站着的怪。而大剑则是竖着往地上砸,范围极大。
我举一个例子,就是我开地图第一次遇到红灵。就是等对方打完一套跳劈就完了。
我的战斗策略就是,遇事不决,举盾防御,然后跳劈。
至于BOSS战,依旧有难度,也许跳劈和法术都没啥作用,依靠的依旧是精准的闪躲后普攻(排除盾反)。
但我觉得这算是魂系列的乐趣之一。
如果随便什么BOSS战都能逃课,那也就没意思了。