V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  secondwtq  ›  全部回复第 46 页 / 共 124 页
回复总数  2471
1 ... 42  43  44  45  46  47  48  49  50  51 ... 124  
@youla #74
> 你还要怎么样

我之所以要强调(在本站的环境下)”command”是软件,就是因为本主题标题中要求的是“软件”,但是你实际需要的是“GUI 软件”(就不说具体需求是好久之后才 append 过去的了)。这导致大家不能理解你的实际需求,出现了一些没有实际帮助的回复。
你现在知道了“command 是软件”,以后求助会更顺利一点。
@youla 你看,你说你知道 command 是软件就可以了。那个七划的字就没必要说了。
@secondwtq #72 s/不可以 /可以
@youla #71 我是提醒你本站是认为“command 属于软件”的,和你要不要 command 没有关系。

再说了,你可以不认 command 是软件,我也不可以不认我“抬杠”啊。
2020-12-12 00:05:27 +08:00
回复了 linux40 创建的主题 C++ 寻求带有某种特征的 C++项目
我倒是觉得这个主题符合这种特征: https://en.wikipedia.org/wiki/XY_problem
2020-12-11 23:55:32 +08:00
回复了 wsseo 创建的主题 赛博朋克 2077 今天玩了一下赛博朋克 2077
2077 如果说有一点做得很好,我觉得就是宣发。

有句话说,欠钱的时候,欠的少,银行是大爷;欠得多,你就是大爷。2077 有异曲同工之妙,拿跳票当宣发,去哪都能看见亮黄色的膏药。导致一堆本来不适合这个游戏的人也稀里糊涂入了坑。
大家都在玩 2077,不是因为大家都喜欢 2077,而是 CDPR 的宣发想让大家玩。我甚至怀疑就算大家都喜欢 2077,也是因为 CDPR 的宣发让大家喜欢。

啊,当然我还没玩,没玩的原因是我还没买,还没买是因为我一直觉得游戏要晚买,晚买不是晚一天两天,是至少晚一年两年,晚买的好处至少有以下几条:
* 硬件配置就算不能降维打击,至少也不会拖后腿。
* 网上各种评测和资料基本都全了
* 产品本身也成熟了,bug 之类的该修的都修了(除非厂商弃坑),内容不够丰富的,扩展包该出都出了
* 玩家社区基本成熟,mod 之类的资源会比较多
* 价格便宜 ...
2020-12-11 23:25:48 +08:00
回复了 wsseo 创建的主题 赛博朋克 2077 今天玩了一下赛博朋克 2077
@lexs007 “赛博朋克”跟“朋克”没有直接关系,赛博朋克本来是科幻小说的一个 subgenre,他叫赛博朋克只是恰好有人写了篇小说叫 "Cyberpunk" 而已。
后人又据此衍生出蒸汽朋克、柴油朋克,真空管朋克之类的,只是对一类东西的名称而已,内涵是不同的。至于赛博朋克视觉风格的起源应该是银翼杀手。
2020-12-11 23:03:00 +08:00
回复了 MooneyDiy 创建的主题 互联网 你愿意为知识付费吗?为什么?说说自己的看法
另外我想问问楼主,如果楼主认为
> 免费的 98%是没价值的
的话,为什么还要在 V 站发帖呢?
2020-12-11 23:01:25 +08:00
回复了 MooneyDiy 创建的主题 互联网 你愿意为知识付费吗?为什么?说说自己的看法
@secondwtq #39 s/#38/#39
2020-12-11 23:00:54 +08:00
回复了 MooneyDiy 创建的主题 互联网 你愿意为知识付费吗?为什么?说说自己的看法
楼主好像觉得底下一群人没 get 到楼主的 point,我觉得我 get 到了半个 point 。
当然楼主可能会不舒服,“付费”是我 point 自古以来神圣不可分割的一部分,坚决抵制 #38 分裂我 point 的行为。

不谈所谓“知识付费”的定义问题。所谓“小圈子”,我也混过,只不过我的情况相反,我混的小圈子里面,谁要谈“付费”,是会被追着打的,“付费”的基本是最 low 的那批。
我不知道楼主说的“付费”是付多少钱,我假设在 RMB 1k 一下吧,这个量级对我来说不太敏感,但是我见过的这种圈子带给我的价值也就值那么多,甚至不如很多免费的圈子。
圈子有门槛很正常,站在圈子成员的角度考虑,接纳新成员是希望新成员能给圈子带来价值。这个价值可能是有某方面的知识和技能,可能是有很多闲功夫+热情( a.k.a. 三分钟热度)干活,或者仅仅是可以活跃气氛也行,见得多了,西方国家哪个都去过也可以。
因为种种原因,圈子往往会设置门槛,不过门槛有很多种,并且不是所有人都可以够到的。比如家庭群这个“圈子”,你就得是家里的人才能进去,不需要钱。特定的学校这个“圈子”,你得考试成绩达到一定标准,还得要学费,但是特殊情况可以不要学费。特定的公司这个“圈子”,需要通过招聘的筛选,原则上不要钱,公司给你钱。某某产品的用户群,你要进去起码是个用户吧。
网上的圈子因为关系没那么紧密,门槛都不是那么硬,有的圈子解个验证码,注册个帐号就能进去,一般这种是稍微大一点圈子,然后大圈子里面会有小圈子,小圈子门槛会稍微高一点,但是如果你有可以给小圈子做贡献的能力和意愿的话很多时候进去不难,就算没有能力,在大圈子里面至少混到脸熟,小圈子的人都熟了,有时候也是能混进去的。
当然所有的圈子基本都要过政审,就是你价值观不能和圈子主流背离太多,然后以前别结过什么梁子。

虽然能混进去,但是无论大圈子还是小圈子,中坚力量基本都是贡献最多的那帮人,包括有能力又有实际行动的,也包括单纯喜欢混圈子搞交际的。
当然“钱”是贡献的一种,不过我个人觉得割成员韭菜这类行为是不合逻辑的,第一“小圈子”能割出来的少,这点钱连个程序员都养不起,做不成什么事;第二真要产生 non-trivial 的金钱关系的话,起码签个合同吧,到这一步已经不是“圈子”了;第三真要割韭菜做东西的话,有个专门的词叫众筹。

所以我的这些圈子里面东西基本都免费的,我不知道楼主是不是把“免费”和“无门槛”划等号了。免费不等于无门槛,不是谁要都可以给。要想从大佬手里面套东西,至少得懂基本的规矩,比如问问题之前要 RTFM,伸手不要太理直气壮(最近 V 站好像就有这股歪风邪气)。有些东西是小圈子限定,所以你得先想办法混进小圈子。有些东西是只给有一定基础的人的,萌新想当然的提个要求,圈里人从问题就能看出你什么水平。如果你跟大佬本来就很熟,那就随便了,不过一般到了这种程度,小圈子也是想进就进了。

说到基本的规矩,我的这些圈子里面,“不割韭菜”恰好就是基本规矩之一,这个可能有其特殊性(涉及到一些法律问题)。大家无聊的时候就会把割韭菜的人批判一番,比如有人把大家免费共享的东西拼凑一下拿到淘宝上去卖,还有前几个月有人搞了个群,入群要收费,不多好像就几块钱,关键是他人还很奇怪,所有对他不利的评论全都被他删除+拉黑。于是被他拉黑那帮人就造了梗,发了文章婊上去。后来好像入群不收费了,又被爆出来开了 Patreon ... 关键他东西做得还凑合,看了好一阵子的戏
嘛,因为我是站在不割韭菜的那一边说的,所以可能会有偏见。不过我看到的就是,做出最大贡献的大佬们没人收过费,收费的除了拉了自己一票“饭圈”,割了一波韭菜,没啥实际贡献 ...
@youla #57 我在 #41 里面后面那些例子可能有些奇葩,本站是普遍认同“command”是“软件”,你就算不知道看到后面回复应该也知道了,然后还“只认图形界面的叫软件”,我觉得这才叫抬杠。

另外,现有的“查找”这个需求,做得最快的,或者最快的之一,应该有那么一个或者几个命令行软件。命令行在“查找”这方面是不差的。“替换”的话,按规则的批量替换也是命令行最快,交互式的替换现在 GUI 做得也不错,使用 ncurses 界面的 vim 和 emacs 也能做。
不过我寻思不论是主题还是 #57 都没说“替换”啊 ...
2020-12-11 19:07:22 +08:00
回复了 Te11UA 创建的主题 程序员 怎么能更好地记住技术知识点呢?
我觉得没必要记,知道有这么一个东西,知道去哪查就可以了。
面试是特殊需求,面试只是一种筛选手段,面试面的好不代表其他事干的好。
2020-12-11 18:58:16 +08:00
回复了 CSE 创建的主题 新手求助 如何利用 mac 电脑,学习 Linux 操作系统?
vim 写 C 是可以的,vim 和 C 是天然搭档。写 C++倒是有点蛋疼。

虽然我这边是 C++,不过我这倒是全员 vim+GDB……
不如楼主直接”粘包 site:v2ex.com”?
2020-12-10 20:35:30 +08:00
回复了 fancy2020 创建的主题 Linux 关于 Linux 内存使用的一个疑问,大家帮忙看看
slabtop
2020-12-10 19:57:19 +08:00
回复了 wsseo 创建的主题 赛博朋克 2077 今天玩了一下赛博朋克 2077
2077 是赛博朋克视觉风格,不是杀马特风格
车难开这个昨天其实就有评测说过了

我倒是好奇楼主为啥要去玩
2020-12-10 12:43:46 +08:00
回复了 MooneyDiy 创建的主题 互联网 你愿意为知识付费吗?为什么?说说自己的看法
楼主有这么多”渠道”,跟老婆有代沟很正常啊
楼主主题就没写清楚,append 还是继续犯错误 ...

你所谓的 "command",也是“软件”。或者要是按照 FSF 那群人的想法,所谓"command"是最基础的“软件”。网站、字体、硬件里的固件,都是“软件”
哦对,还有,编程语言实现“将一种计算模型映射到另一种计算模型”,这个也算是一个“问题”,无论其源和目标是什么,这个“问题”都可以由多种计算模型,多种算法来解决。
因此把 E 语言映射到 Python 的工作,可以使用 Python 完成,也可以使用其他编程语言完成。Python 可以把 E 语言映射到 Python,也可以把 E 语言映射到 JVM 。这一过程一般就是纯粹的“计算”,甚至可以不需要 FFI 。

GitHub 上的很多编译器项目都是直接拉下来就能构建,额外的依赖很少。
然后我现在硬盘里有个尚未构建成功的 Chromium ...
不一定。“基于旧语言创建新的语言”的方法,比茴的写法都要多很多。
我猜测楼主这种想法可能是受了某些人“所有语言都差不多”,“学语言就是学库”之类言论的影响。

首先要明确,编程语言存在的意义是充当人与机器沟通过程中的编码形式,程序员输入的表面上是代码,实际的东西是隐藏在代码中的 “计算”。
一个循环在不同的语言中有不同的写法,就好象乳法有不同的乳法,但是最后都是循环,都是乳法,这一“本质”不因具体的实现方法而不同。

然后要区分语言和语言实现,语言定义了计算的编码形式,而语言实现将该语言所编码的计算在特定的平台上执行。同一个语言可以有多种实现,可以“基于”不同的语言,从这一点上来说,标题所提出的问题的答案就是否定的。

再然后是编程语言的性能,语言的性能应该定义为“不同编程语言进行同样计算时的性能”,但是需要注意的这里的“计算”是使用编程语言编码的,编程语言本身定义了计算的抽象模型,也就是说基本上在进行任何有意义的比较时,比较的都不是完全一致的计算。而从实际意义来讲,“计算”本身是解决问题的工具,所以一般在讨论“编程语言的性能”时,讨论的是使用不同编程语言解决同样问题的性能差异。但是人们使用编程语言解决问题时使用的并不是这个编程语言的定义本身,而是编程语言(即计算模型)的特定具体实现,因此其实是“使用特定的编程语言实现解决特定问题时的性能”。

但是就算同样是“使用特定的编程语言实现解决特定问题”,也有不同的方法。比如同样是大数组的排序,C 用插入排序,Python 用快排,就不太合适。这个具体的方法可以被叫做“算法”,但是由于上面提到的不同语言之间计算模型的差异,“算法”也不具备直接的可移植性。在一个语言实现中高效的算法,在另一个语言实现中不一定高效。所以其实就算是同一个语言的不同实现,也没有什么太大的可比性。另一个讨论“性能”时经常被过度简化的是“问题”,这一点其实在讨论硬件时尤其明显,吃瓜群众往往希望能获得一个简单的答案“硬件 A 比硬件 B 的性能高百分之几”,但是性能问题本来就不是这么简单的,在解决某一个问题上的优化,对于另一个问题来讲可能就是劣化。而这种心理正好被 marketing 利用,因为这样他们可以 cherry pick 并着重宣传好的方面,引导大众不去关注不那么好的方面。

再说说硬件,目前的计算机硬件不理解问题,更无法直接帮你解决问题。其厂商定义了自己的计算模型,硬件本身则提供这一模型的具体实现,这是一切软件工作的基础。原则上硬件是编程语言实现的一部分,但是在实际应用中的关系要更加微妙。特别是在研究性能问题时,具体讨论的对象往往取决于实际情况。比如一般会要求硬件条件是一样的,同时硬件需要操作系统、驱动程序等环境支持,这些应该也保持一致。考虑到现实中绝大多数编程语言实现者一般只有选择硬件和操作系统而没有影响它们的能力,绝大多数情况下也是将这些都排除在“编程语言实现”范围之外的。但是在比较 Kotlin 和 Scala 的性能时,JVM 也应该保持一致。就连比较两个 C 实现的性能,也需要考虑内存分配器的影响。“保持一致”并不能完全解决问题,整个编程语言实现中,不同的模块和不同的配置方式可能会体现出不同的性能特点。

所以这是楼主所提出的“编程语言”和“性能”,以及把这两个词放在一块时,背后的水有多深,简单来说就是基本没法谈,楼主的问题也就没什么意义。

(哦对我还没说“性能”的度量有多个维度,包括但不限于延迟、吞吐量、功耗、存储占用等)

那一般人们说的编程语言的“性能”指的是什么呢,其实只要把上面几个比较 tricky 的部分都加上“约定俗成的”就可以了:
* 比如,第一个问题是语言实现的问题,“约定俗成的语言实现”指的一般就是一个编程语言的 de facto standard 实现,或者主流实现。
* 之后是硬件及软件环境问题,这个一般把两个语言实现纵向来看,能保持一致的都要保持一致,但也不仅仅是“保持一致”那么简单。在这里有可比性的前提是:在同样的硬件+操作系统组合下,存在语言的主流实现,并且该组合是该主流实现的主要目标之一。
* 然后是“算法”问题,对于某个特定的问题,“约定俗成的”一般采用一个使用该语言的平均水平的程序员解决这一问题时会采用的“算法”。
* 最后是具体解决什么“问题”的问题,这个就多了,比较“约定俗成的”有光线追踪、计算 pi 、mandelbrot 、矩阵乘、正则匹配、数独、词典计数、Web 服务器等。如果一个编程语言实现相对于另外一个,在大多数“问题”上表现都没有优势,并且有相当一部分“问题”有明显差距的话,那么就说这个实现的性能(或者说“平均性能”)不如另外一个。

可见其中可以做手脚的部分非常多。

上面已经说了,现实中绝大多数编程语言实现者没有影响硬件和操作系统的能力,因此编程语言实现一般会选择将其源编程语言所定义的模型,映射到另一个模型。这就是说“用另一个模型实现某个模型”。其性能主要取决于两个因素,一是所映射到的目标计算模型的性能上限(当然计算模型本身是没有性能 /性能上限的,所以这里指的是具体实现的性能上限),二是实现本身做这个映射的效果。

这里有个“性能上限”,这是我自己 coin 出来的词。指的是一个程序员,熟练掌握接化发,能够在特定的语言框架内,写出这个语言解决某个问题性能最高的程序。这个“性能最高的程序”所达到的性能,称为“性能上限”,这个程序员则称为一个“Surprisingly Smart Programmer”。当然这个性能依然是需要在特定的实现上。这里主要是解除了“约定俗成”中“平均水平程序员”的限制。
之所以提出“性能上限”和“Surprisingly Smart Programmer”这两个概念,是为了引申出“Surprisingly Smart Compiler”,或者“Surprisingly Smart Programming Language Implementation”这个概念,本来程序员需要使用其他计算模型来表达算法,但是编程语言实现允许程序员使用新的计算模型,如果编程语言实现可以做到“Surprisingly Smart”的话,那么就不需要“Surprisingly Smart Programmer”了。编程语言实现就可以发挥出目标计算模型的所有性能潜力。
(这俩词依旧是我 coin 出来的,为的是和已有的“Sufficiently Smart Compiler”这一概念保持一定的联系同时又有一定的区别,按照 C2 上的定义,“Sufficiently Smart Compiler” 只要“as fast as C”就可以了,“Surprisingly”更强调“上限”,你懂么,就是传统功夫四两拨千斤的本事)

再来说第二个因素,现实中不存在“Surprisingly Smart Programmer”,更不存在“Surprisingly Smart Compiler”。现实情况是——不同编程语言实现的智商(也就是上面所说的“实现本身做这个映射的效果”)各不相同,有些很低,有些还凑合,有些高一点。但是最高也高不过某个上限,这个上限目前大概在“Sufficiently Smart”这一级别,做到这一级别的都很少。这两个概念的意义在于思考实验,假设编程语言实现 C 基于目标实现 T 实现了一个新的计算模型:
* C 的“性能上限”不会高于 T 的“性能上限”。
* 如果 C 是一个“Surprisingly Smart Compiler”,那么 C 的“平均性能”也可以达到 T 的“性能上限”。
* 但是尚不存在“Surprisingly Smart Compiler”,C 最多只能做到“Sufficiently Smart”,也就是说两者的“平均性能”和“性能上限”都差不多。
* 如果 C 连“Sufficiently Smart”都做不到(很有可能),那么 C 可能连“性能上限”都比 T 差一截。这时就连“Surprisingly Smart Programmer”都不能使 C 的性能超越 T 。
* 但是 All is not lost. 无论 C 做成什么样,在特定情况下的性能是有可能超过 T 的平均性能的。
* 在“Surprisingly Smart Compiler”不存在的情况下,一般 C 和 T 所实现的计算模型差别越小,控制 C 和 T 的“平均性能”和“性能上限”的差距对 C 的实现智商要求越低。

目前主流编程语言中,平均性能和性能上限最高的均为 C/C++,C/C++ 的主流实现将 C/C++ 代码映射为目标硬件的汇编,并且会进行大量的优化变换,更别说这些主流实现还提供大量的非标准扩展,比如内联汇编在 UNIX 平台上基本是事实标准。也就是说在 C/C++ 的主流实现中,目标计算模型实现基本上是最高性能的,其实现本身又基本是最高效的,C/C++ 所定义的计算模型和其目标的差别也不大(尤其是考虑到非标准扩展)。
理论上其他编程语言实现可以在性能方面超越这些 C/C++ 的主流实现,但是目前 C/C++ 是三方面全面优势,其他编程语言得一个个推翻这三座大山,短时间内希望不大。还是要以和为贵,点到为止。

比如楼主给自己的 E 语言(大 E 了没有闪,说明很快啊)做了一个实现,映射为 Python 语言。按照刚才那一套民科理论,该 E 语言实现的性能就取决于实现本身的质量,和目标 Python 语言实现的性能。而要提高该实现的性能,也可以应用刚才的理论,比如改变目标实现,使用比 Python 主流实现 CPython “性能更好”的 Python 实现,并把基于这个实现做出来的 E 语言实现钦定为 E 语言的“主流实现”,这样按照刚才的定义就比 Python 性能更好了。或者提高 E 语言实现自身的质量,比如想办法检测代码中可以并行的计算,使用多进程或 GPU 来实现这些计算——大多数人写 Python 不会常用到这些东西的,依然可以在刚才的定义上完成对 Python 性能的超越。
1 ... 42  43  44  45  46  47  48  49  50  51 ... 124  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4934 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 08:34 · PVG 16:34 · LAX 01:34 · JFK 04:34
Developed with CodeLauncher
♥ Do have faith in what you're doing.