V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  FrankHB  ›  全部回复第 8 页 / 共 92 页
回复总数  1830
1 ... 4  5  6  7  8  9  10  11  12  13 ... 92  
2022-09-17 19:34:24 +08:00
回复了 badboy17 创建的主题 Java 又被面试官问倒了,关于分布式锁
@sujin190 要怎么给解决方案,自然不是一回事。

但既然 @bigbyto 有从理论上提到这方面的问题,那我就顺带吐槽一下很多时候很基础的东西在一些情况下会被人莫名其妙地忽略掉。也许是被惯的。
至少“锁”这个玩意儿什么时候得用,其实这里是不用很关心具体哪个领域的,分析过程和结论都没什么变化。偏偏要直接上具体实例分析,反而无意义地削弱了结论。
反应得过来的话,就是个简单的锁的粒度的问题……但其实工程中你可能得容忍大多数基础设施的开发者在这里都没怎么拎清楚。

当然你也可以说,太理论了没必要,对从业人员兼容性太低,反而容易让人联系不到实际问题而抓不住重点。
这个也说得过去,不过你要提数据库的锁类比,已经相当抽象了。
而且数据库其实这方面是优等生,这里的期望扩展到其它领域是不那么靠谱的。
2022-09-17 13:35:52 +08:00
回复了 badboy17 创建的主题 Java 又被面试官问倒了,关于分布式锁
@sujin190 “实现正常的都是对需要操作的资源加锁而不是对服务加锁”

这你可能太乐观了。都不用管啥分布式系统,这年头 GIL 都干不掉的运行时都满大街跑呢……
(当然搞 Java 的可能没那么倒霉,所以感知不强……)
2022-09-17 13:21:34 +08:00
回复了 idblife 创建的主题 Linux xfce 的 4k 字体渲染竟然比 win10 看起来都舒服
@zijieq 直接打开截图没看哪个是哪个就觉得左边看起来顺眼,右边有点虚。
仔细看左边有连字(我不喜欢),字体都不一样,比了个寂寞……
2022-09-16 12:59:33 +08:00
回复了 kerrspace 创建的主题 程序员 windows 为什么无法访问 Ubuntu 初始化的机械硬盘
@ragnaroks Windows 也可以直接挂载设备当 raw 存储使用,只是文件系统和特供文件系统的 DOS/Win32 API 要求分区。
2022-09-15 23:17:14 +08:00
回复了 dangyuluo 创建的主题 C++ 怎样在 C++里用 C-style 按行读取文件并不分配 heap 内存?
连 ifstream 都写不出来的好意思纠结怎么 allocate memory ? review 直接穿小鞋。
(就是自己实现,不止是分析;重点是 basic_filebuf ;别说找不到抄哪。)

清楚栈可能实际会造成问题是入门,但拿对实现细节和运行时假设的依赖当做拒绝的理由说服力是不大够的。

言简意赅、强而有力:就你也配挑三拣四?
就是甲方爸爸都特么不大可能配关心这种问题,还特么是这种方法论上就没靠谱结果的问题。
合格的 C 和 C++用户:知道 ISO C 和 ISO C++都根本就不管什么栈,哪怕拒绝分配栈给你自动对象于是 int main(){volatile char x = 0;}都炸栈 UB 也照样 conforming——原则上,自动对象根本不需要被 allocate 。
所以谁倒是给我发明个光扯什么 C++和 C style 就能怎么敲捣出 precise understanding 的方案出来?

会纠结 allocate memory 的,最起码也得了解一种 allocator model 并且会自己正确实现有实用意义的实例,写出用例说明相对默认策略有效改进在哪。
如果想装自认为有能力指定全局默认策略的专家,我会把门槛设置到用 C++11 正确实现 std::make_obj_using_allocator ,而不只是稀里糊涂分析具体实现。
分析不清楚 ISO C 和 POSIX 等相关 C API 设计缺陷甚至只会无脑 malloc 连 realloc 哪里弱鸡都没个谱的,禁止覆盖选型决策。
毕竟,这里有人也提到了,正常人是“通常应该清楚自己在做什么”,而不是“清楚系统和程序在做什么”。事实上,正常语言实现的设计从一开始压根就不会照顾任意允许 yy“清楚”细节的伪需求。

@Jirajine “栈上”和“静态”,你是想说哪个?(虽然看上去哪个都说得通。)

@GeruzoniAnsasu 想多了。就这观念,能 precisely alloc heap 就有鬼了,占位的 header 多大怕都搞不清楚。

@iyeatse 就这症状,想 precise 是不是还要教清楚怎么算 I/O buffer ?
典型 C 实现中有些 buffer 配置可是找不到符号的呢……有的折腾了。

@cntatch 就算埋坑,有关 bug 也可能从来不被发现,直到你替他擦屁股的时候。

@chenzhongxiang 太放水了。
glibc 质量还是挺菜的,虽然主要是设计而不是实现问题。

@zengmingyang96 指定个 2^4096B 试试?还有指定了就一定能留得出来?

@dangyuluo 不管你拿多少,当务之急不是先考虑怎么把菜鸡撵走吗?
如果这同事就是给你发钱的老板,当我没说。……就指使别人撵(

@saberlong 显然不是。都说拒绝 getline 了。

@forcecharlie 这不就是自己造_IOLBF 特供的丐版 ifstream 么。

@hu8245 正解,不过最好还是有代码风格合规负责人教育什么清楚事情应该什么人管。
2022-09-15 12:11:20 +08:00
回复了 littlerainer 创建的主题 程序员 适合程序员 or 计算机研究生的轻薄笔记本选择
@gdm 相对不方便我同意,不会特别舒服,不过也没日用不了。
这几年的手机屏别太小,看个 pdf 还是没太大压力的,虽然长期对眼睛更不好。
除非是 FPS 游戏之类,即便强调效率鼠标也非刚需。说实话我 PC 好几年不用鼠标了——SB 的触摸板是挺可以的,日常还真不会损失效率(特别是触摸屏还没给我拆坏的时候),还比较省劲,离键盘也近。(但整机性能不够,所以我日常远程。)而触摸屏优化好的环境,触摸板都能不大依赖。类似地,pad 类设备吃亏的主要就是没实体键盘。
于是不干重活时 Surface 这种就是让加键盘用的(就算是丐版)应该也能解决主要问题。
当然一般 Windows 本的触摸板嘛,确实比较一言难尽……

@frodez 这个看来是真得看学校了……
外面的会场不好说,但是只是上课,我记得真没遇到过找不到插座的情况(更别说得抢),每次都是到教室就先插上电。可能基础设施没那么古董的关系吧。
而且连续半天的课是有,但六七个小时没法解决插电的真不好想像。真遇到极端情况我会考虑蹭关系还可以的老师的办公室。
至于干活,我的期望是生产力配置的笔记本不插电从来就是特种任务,或者说应急,能坚持 3 小时就合格。大多笔记本不插电性能都是弟弟模式,搞不好编译时间轻松翻倍,于是没电干脆不考虑干重活了。当然我这因为平时一直有电,上课给电脑安排点活并无压力。

其实更大的坑是我那时候都没充电宝、pad 和手机之类的选项——续航更刚需,不过我都弃疗了。全都要只会导致日常有电用的时候更不痛快。而这仍然是现状。
2022-09-12 14:41:14 +08:00
回复了 Chaconne 创建的主题 程序员 发现我们公司技术人员考核按代码量来的
你只看见代码量的文档,有看见怎么统计 KPI 的吗?
搞不好就是用功能点或者 bug 数乘以代码量的倒数考评呢……然后一堆自作聪明的就该呵呵了。
2022-09-12 14:34:54 +08:00
回复了 littlerainer 创建的主题 程序员 适合程序员 or 计算机研究生的轻薄笔记本选择
@gdm 别的不清楚,计算机专业的研究生有这么惨的吗……
再怎么说,至少做 presentation 总会给插电的吧。
而且现在不都早就习惯线上开会了么。
如果非得说场下打发时间记东西手机不方便……真这样就不要用主力笔记本了,二奶 pad 说不定都更合适。
2022-09-11 01:15:40 +08:00
回复了 1054850490 创建的主题 NAS 如何对文件进行查重
@documentzhangx66 重要数据当然有备份,所以受害的主要还不是数据,而是时间。

最大的教训是策略方面的问题:要想持久数据(包括文件系统元数据自身,比如文件创建时间)真正可靠,就不要依赖文件系统层次上的半吊子功能,而应该在更高的层次上冗余,因为文件系统暴露给 UI 直接提供的最终用户的功能极其有限,一旦出问题难以短期内选择数据的二进制映像恢复回正常操作状态(有源码的都看的要死,更别提 Windows 上一堆找不到源码的)。文件系统去重只能作为在线系统的一种运行时优化。
2022-09-10 11:12:12 +08:00
回复了 1054850490 创建的主题 NAS 如何对文件进行查重
@documentzhangx66 基于半吊子 FS 元数据的去重,一旦出点意外,恢复数据体验跟屎一样。( Win Server 2012 时代的受害者路过。)现在宁可手动 judpes 。

更重要的是,你看清楚,OP 的场景你这玩意儿根本不顶用。
2022-09-10 10:38:46 +08:00
回复了 littlerainer 创建的主题 程序员 适合程序员 or 计算机研究生的轻薄笔记本选择
就这点笼统的需求,我这一代 G14 都够打了,内存当年天猫直接 8+32 升满。
就是性价比比较感人(但其实灯可以省掉)。
不是准系统砖头机续航这个一般不用担心。连续开会几个小时有不给插电的?

@jiaqiliu 不接受 ARM 苹果自动 out ,正确的。不过 OP 看起来还在乎价格,那么 XPS 也是挺感人的。

不炼丹对价格敏感的,看看 code01 之类,我没用过但是看上去钱大都是花在明面的硬指标上了,也没很大对不起这个价格的其它槽点。

@geekvcn 这个值得注意,而且其实很难搞( 14'一堆恶臭 2.5K 屏)。然而其实非整数比不管什么系统都不会好哪去,就是烂跟更烂的区别。
不过我 G14 日常都用旧 SB2 (除了分辨率主要是屏幕比例香;最近触摸屏排线被我拆废以前还能多点点)远程了(所以灯更白费了),这个我反而感知不太大。

另外还有键盘手感和布局……
一代 G14 键盘方向键布局还好点,不过后来几代也摆烂了。这方面除非特别强调游戏本 14'基本都不大会让人舒服。
2022-09-08 22:02:27 +08:00
回复了 Cola98 创建的主题 程序员 学习一门技术的时候,是不是要把时间都 all in 进去?
@thedrwu 因为 all in 太容易疲劳,效率瓶颈比较明显。对大多数人来讲,就算 all in 也是尽量选不同领域的东西反复横跳效率更高。
2022-09-08 21:55:54 +08:00
回复了 wdhwg001 创建的主题 iDev 所以,苹果最终还是自己打了自己 Human Interface Guidelines 的脸…
@wdhwg001 太阳底下无新事,传统艺能了。
就 JavaScriptCore 对 JIT 开洞,还不够体现只准州官放火么。
2022-09-03 19:13:12 +08:00
回复了 primitive 创建的主题 程序员 C++看开源代码有什么好方法吗?
@justanetizen @hello2090 Source Insight ?得了吧,那玩意儿现在怕是还不如开个 VS 手动 Ctrl+Shift+F 靠谱呢。
而且默认那个故意放大标识符制造语法噪音,反而导致破坏等宽字体的阅读效率,基本就是平时不会习惯同时编辑和阅读的代码的初级用户才会吹的。

BC 倒是还算好用,但对付代码也没和 KDiff3 之类拉开差距,要经常合并怕还不如。
2022-09-03 12:38:55 +08:00
回复了 weishao666 创建的主题 问与答 普通人能读完 Linux 的源码么
@ipwx 只是读的最多的,几乎所有就不太可能。

也不要指望什么 Linus 定律。
随便举个例子:fs/cifs/trace.h 这种瞎定义 TRACE_INCLUDE_PATH 的合了也就是合了,并没几个人会看清楚。
这 bug 还不就只是这一个地方:android.googlesource.com/kernel/msm/+/3f74f6ec717e320a8fe1d108d1e0812e352b4ee8%5E!
@luckycat 说是艺术,很大程度也就是掩盖过气的技术能力不足罢了。

UNIX 默认非技术型用户不关心他们不提供的东西,但实际上这就是事后诸葛亮,而且大部分根本不符合事实。
所谓只提供机制不提供方针的哲学做到的就是 UNIX 风格的产品默认永远是半成品,因为即便是理解技术并完全能调整体验的用户,也没机会在内部自动化复用这些过程的冗余——除非自己二次开发。
随便加个约定优于配置的思路,根本不会导致“束缚在一套方针或界面风格内”。只要足够模块化,过气的东西直接扔给用户就是(而不是从来就当不存在),这没有后遗症。
某种意义上,这种自以为是也是 X 被 Windows 很大程度取代的原因,尽管后者连更重要的“机制”都不提供。
逼迫用户丢了西瓜捡了芝麻,可不是什么光荣的历史。

另外一个类似的故事是《无名师和万行码》。
其实就是 UNIX 祖师爷水平不足,造不出同时能适应 C 和 shell 需求的解决方案,于是反过来强词夺理来分裂原始需求了。
2022-09-03 09:54:54 +08:00
回复了 SmileDup 创建的主题 程序员 自己写玩具,用什么跨平台技术好?
@yxzblue @murmur 玩具怎么好意思默认不跨平台。

不跨平台≈要么对唯一支持的平台有很牛逼的优化,要么就是连玩具都有疑问的想平台都做不到的弱鸡。
现在实在没法跨平台的东西,要么是过于古董当年普遍没这种需求,要么是设计过于垃圾让人没兴趣 /没本事移植了。
而如果因为知识体系的原因导致自己脑子只会适应某种跨不了平台的技术,那么说不好听点,脑子多少是玩具。因为没多少人原始需求里有“跪舔平台”所以非得只抱着一个平台不放,会发现不跨平台更容易。相反,跨平台的方案基本允许隐藏一些平台特供的东西而实际上更省事。不过 OP 既然都自己会选了,显然不是这种情况。

注意这也就是跨平台,没说各个平台都很顶用,否则 OP 也不需要有这样的问题。
也因为各自都有不怎么样的明显缺陷,所以没法简单判断哪个一定更好。
OP 至少要清楚:首选的 tier-1 平台是什么、自己熟悉什么东西、愿意熟悉什么东西、是否可能加人一起玩、是否以后有把玩具改成不是玩具的需求、预期规模多大,才可能拎得清楚实际适合什么。
2022-09-02 22:15:39 +08:00
回复了 pepi 创建的主题 Windows windows 平台上是不是没有一款完美的中文输入法?
@ysc3839 功能么基本上都还过得去,但还有个普遍不太行的大问题:安全性。
先不说厂商会不会干坏事,光是 Windows 这样动辄注入进程的实现方式来讲,随便出点岔子后果都会被放大很多。
既然说“完美”,实际没有用户能担保不出问题,概率再小也是没法回避的问题。
2022-09-02 21:31:17 +08:00
回复了 skywind3000 创建的主题 Vim 分享篇文章:为什么我会使用 Vim ?
@skywind3000 139 楼,屎麻烦一次性拉完。

> 我好心提醒你 xxx_ptr 跨二进制要挂

template<typename T>
using observer_ptr<T> = T*; // BS 亲自鼓吹(无误

你家二进制挂了?

另外我算是反应过来也许为啥不提 xxx_ptr 的另外的臭名昭著的二进制问题了,因为那个 xxx_ptr 里有个看起来冗余的设计某种意义就是专治你这种自作聪明的 ABI 小鬼不服的……

> COM 里不就是依靠 Release 代替析构保护跨二进制不同堆的析构释放冲突问题么,老衲二十多年前写 COM 时看一眼就明白了,用得你来教?你哪年学会的 COM ?写过多少 COM 相关代码啊?

所以这就是 COM 严格比这个冗余设计更傻逼的问题了。当然这肯定是故意的,因为 C 没析构这样能特别处理的东西。

也就是这种把 metadata 翻来炒去最后只剩下 ABI ……的哪壶不开提哪壶,要不是兼容 C 的破烂,COM 用起来的体验能那么屎么。人 .NET 为什么没那么拉仇恨?

> 现代程序,内存分配失败就应该 assert 了

Linux kernel:我就乐意超卖给你延迟 OOM 炸妈,不服?还是嫌弃我不是现代程序?

> 生成代码是一致的,但是我也不想到处用,为啥?

怎么就上套了呢。

说了不懂 ABI 欠扁在哪,还硬掰。

> 你觉得非要套个 unique_ptr 的套套你才舒服,我也没说你不对,但是干什么事情都头上都要顶个套套,更多人会觉得浑身不自在,就像明明没下雨,有个二百五非要穿一件雨衣在操场上跑步一样

C 厨的后遗症之一就是看得见 unique_ptr 是个套套,却强行眼瞎到 *(因为欠扁的歧义,我得指出这是个 declarator 里形式上叫做“ptr”的东西,不是 operator )这个直接写死的垃圾语法和弱鸡语言不是个各种意义上都更严重的套套。
为什么是套套?因为这种东西不配是一种。unique_ptr 好歹允许让用户自己发明其它套套,而削弱了这里的弱鸡程度,反而不具有那么明确的套套属性。
本来更一般意义上,这就是个挂到 parametric polymorphism 上实现的 unary type ctor 而已,什么大惊小怪的。
自己写不出来,非得让语言设计者替自己钦定还觉得光荣的斯德哥尔摩综合症患者,就 C 用户里特别集中,就别怪人不鄙视了。
当然 C++ 这种缝合怪也不是啥好鸟,顺手就给 ptr 加塞个&( C++/CLI 再糊了个^),也是糟粕。但是讲道理,&创建的类型还就比你*这种横竖都跳不出 object type 的破烂货特殊,本就更有资格当套套了。

> 比如 if constexpr ,可以让我的代码编译期做判断提升性能,但是我忍住没用了,改用模板和宏去模拟,为啥?

模个屁股,一个 tag dispatch 就能看清楚的东西还画蛇添足套省不了什么代码量的宏,嫌弃可读性太高了?
还是你就在口嗨连怎么实现都没想象过?

> QString 有多强,你可以学习下:

QString 还就是 GotW#几(懒得找了)里提过的 basic_string 垃圾之处的威力加强版——一坨跟实体类型无关的非必要接口乱七八糟地堆在类定义内。
放外面会死?
什么 Latin1-centric 的笑话我就不多婊了。

> https://www.zhihu.com/question/54664311/answer/140476787
> 与其说它是个字符串,还不如说它是个处理二进制数据的 buffer ,基本等同于 std::vector<char>。

什么煋……
string 的本义就是叫做 alphaset 的集合的元素能生成的序列,什么“字符”(包括 char_traits 之流)是瞎扯的,搞不好历史上就是一坨妄人对 alphabat 望文生义出来的缝合怪。
发现不了这个的真是数学基础不牢靠。
当然,也不全是用户活该。C++ vector 就是个垃圾命名,真正勉强能算上 vector 在 C++里叫 valarray 。但再垃圾,也是垃圾不过 C 把 B 里好好的 vector 硬叫成 array 开启打乱萝卜坑的妖风的。
( SSO 什么破烂的既然该答主应该也不够格纠结,略过。)
——然后,吹 QString 当“字符”串的习气比 C++的设计更加数学丈育。

> 大道至简,这个 PyStand.cpp 很简单
经典 CS 笑话:Py 能映射到“大道”和“简单”上。
(只是顺便,没特别黑你的意思,说实话我懒得看内容。)

> 又来,我跟你说了我希望尽量限制标准在 14 及以下,你完全 get 不到我的角度。

string_view 这种 C++11 子集就能实现个大概的东西都糊不会,非得像什么 QString 之流的垃圾设计风格看齐,这根本就是脑子里的浆糊问题。
真是实力不够拎不清楚怎么实现,抄个 abseil 会死啊……

> 我觉得写代码让更广泛的编译器支持我的代码的意义,比只知道无脑飙 C++ 版本更有意义。

什么无脑飙版本,你当是 Google 炒肉末吗?
C++那么多改得罄竹难书的垃圾不会举例,夏虫不可语冰还要 inline expansion 一下凑字数是不?
我教育你俩例子:lambda default capture 和 u8 literal 这俩货被 C 艹 20 改的是没法让前后代码安生的(要么条件包含,总之基本不能只写一遍兼容不用标准)。
这才是比什么版本号更确切的工业级傻逼。
但是 Qt 这种第一个 minor 版本 deprecate 第二个 minor 版本就整个把 API 干掉的明显更加十足地工业级傻逼。自行领会。
“没做过啥真实交付项目的人,说一百遍他都领会不到。”这就是正确的废话。

> 觉得恶心的话你去跟标委会那帮子鸟人提案,让他们把指针从 C 艹 下个版本里删掉啊,我乐见其成,看看他们听你的不。

脑子有坑吗,干嘛要浪费时间在糟老头子身上?(“实际深入点的经验全无”——你这是没对付糟老头子的经验的自供吧?)
虽然没法 #pragma GCC poison 是弱鸡(看,又是个 * 比 unique_ptr 严格烧饼的地方),但是退一万步也不碍着我能人肉 review 不给你过啊?

> 计算机领域很多,别总在你熟悉的那个领域里打转

又是废话。
但看得出你倒垃圾又不需要多有熟练度,阻碍你乱倒垃圾也不需要几点武力值啊?

> 所以说你从来只看得到一,看不到二三四。BasicBitmap 里,老衲前面已经给 inline `#define` 成具有 always_inline 属性的宏了,你是眼睛瞎了看不见,还是不知道什么叫做 always inline / force inline 啊?

我懒得看,不过你这样直接 UB ,半轮 review 内会被打死。

> 程序员别成天只知道代码,别满脑袋都是技术,走向社会要吃亏的,有空多了解下技术以为的人文知识,荀子曾说:“故不问而告谓之傲,问一而告二谓之囋。傲、非也,囋、非也;君子如向矣。”,看不懂的话我给你翻译一下,荀子他老人家说:“别人没有问就去告诉的,叫做急躁,别人问一个问题而告诉别人两个问题的,就叫做唠叨”。

你要多知道点人文知识就可能知道几十年前吹这个搞不好是得被查成分的。
而现代人不兴这个,其实主要就是懒罢了,犯不着对一个连“学阀”都不沾边的市井路人闹情绪。
但这不表示拦住你倒垃圾就很费劲。
ky 啊 ky 。

> 动不动就 “你看看 A 去”,“你知道 B 吗?”,生怕别人不知道他懂一般,在荀子口中都是君子为人需要避免的东西,计算机领域博大精深,谁都有不知道的东西,动不动就想教别人一下,在你小圈子里没问题,出了圈还这么着,不能教而强教,担心闹笑话。
什么荀子,过气了。
时兴点说,不懂还好为人师的,那是民科的一个子类型。

> 但是 strict aliasing 这种傻鸟设计的东西不一样,这属于当年标委会那帮子鸟人设计出来的缺陷东西

傻鸟的是把 C 抽象机当做 PDP 破烂用的过气货色。

https://queue.acm.org/detail.cfm?id=3212479

明明几乎就没可能摸过 PDP 却在这种旮旯地方还杠上了,不是靠 spec 而是靠脑补出来的 model 来定义语言应该长什么样,这大约是谭浩强隔代传人 8……

你 C 甚至都不算个 PRAM(parallel random-access machine)(当然真机器也不是) ,能日字节寻址的 memory 什么时候变成优势了?

> 全部遵守的话,让那帮象牙塔里的人来用当年的标准(不用 bit_cast 这些 20 里打补丁做裱糊的东西),他们都很难写出正确的 memcpy ,这不搞笑么?

这更扯蛋。什么时候 C 保证 memcpy 的实现可移植了?在任何一种精神上——除了你自己脑补——都没有。(又不是 LISP 这么吹几个 primitive 剩下都能 derive……)

只是要可“移植”,__builtin 又不会死……

> 是不是眼红 java/clang 的优化牛逼,自己又没本事进一步优化

就是为了让没事脑补有个可以按字节寻址的不确定具体配置的地址空间这种傻逼抽象彻底滚粗可移植代码。

优化反倒是次要的事。真恶心你就该 bb 什么 std::launder ,但明显本事不大够。

> 为实践服务,不用反过来

实践不是那坨互相瞎吵但最终还是达成共识的糟老头子定义,难道还轮得到你定义了?
按你说的,你有什么把 strict aliasing 踢出标准的动议过?

> "状态机" 拷贝下来和我说,任何 API 都有不完美的地方,状态机是 OpenGL 不完美的地方

所以你这个没 CS 系统训练见识过 model 的人就是不懂什么时候该收声。

状态机为什么欠扁?不仅仅限于是 API 难用那么种表面的性质,根本上是反人类——要求人理解足够多(经常还预测不了上限)的状态之间的全局交互属性才可能精确捕获系统的演化性质。这可能于简化物理实现,但对向人阐明原理和意义 model 来说,就是半成品。(就半成品拉仇恨方面,指针满天飞的破烂和没 resolve 干净 ownership 的没事瞎依赖 GC 的废物程序是类似的其它例子。)

更深层地说,状态机之类的东西和还原论根本不搭——难以可行地证明范式或者最简形式。因此如果要当做逆向设计的终点甚至当做像模像样的理论,多多沾点炼丹伪科学的味儿。

即便是描述计算模型这样最通用的领域也一样——用状态配置描述的图灵机之流有一大坨备胎;相比之下,无类型 lambda 演算就基本上算是独一无二的,多一点太多,少一点太少——再干掉一些东西就几乎必定会失去主要的性质,而要加个保守扩展就会引入 non-trivial 的其它东西,而值得作为还原设计的终点,扩展设计的起点。

题外话:

1) 王垠批评 Lamport 还有那谁的东西有“状态机”是多余的(算是难得没在扯蛋),说白了也是类似的道理。
2) 都吹什么人理解迭代、神理解递归,我看其实是人理解递归,神棍和狗屎把递归替换成莫须有的状态还差不多。

到此还不算直接在批评 OpenGL 。但是当有比较的时候,哪个设计更加裸泳就一目了然了。

> 不要生活在真空世界里了,C++ 比你厉害十倍的人我也经常和他们交流,真的懂 C++ 的根本不会像你这么阳春白雪。

和你交流?谁啊?
或者你跟我重复一遍?不怕溢出遭天谴的话?

> 著名项目,Qt / wxwidgets ,看看他们是不是指针到处飞?
著名和质量垃圾有矛盾吗?
std::basic_string 那么弱鸡的玩意儿都找的到垫背的设计(除了从 C 引进的),也是活久见。
虽然倒是很容易甩锅“因为它们更老”。

> 图形领域的各种 3D/2D 引擎 Ogre3D / Unreal / urho3d 哪个不是飞指针
虽然没有冒犯的意思,我还是承认很庆幸我不对这方面感兴趣而不用吔屎了……

> 他们懂啊,局部用,用也是用自己实现的,看不上你 std::xxx_ptr 。
之类玩意儿么,周知的除了转进投靠 std 的 EASTL 之流,属实懂个鸡脖了。

> 系统开发领域唯一的 C++ 内核 Fuchsia
不懂装懂孤陋寡闻也别那么明显好不。
先吃个 L4 全家桶屑屑。

> 你但凡读一两个上面这类各个领域的著名项目,
但凡你批判不了所谓的著名项目有哪里妥协以及看不出下限在哪,就容易让人觉得你钦定什么著名的资格很可疑。

> Qt 解释过自己为啥用裸指针,以及他的所有权管理
很多人解释过自己为啥不用指针,或者不用 Qt ,或者鄙视 Qt 的扯蛋所有权(因为不方便看到 new 就 review 对照权限一棍子打死而成本捉急)。
当然,不是说 std 就一定比 Qt 好哪去了。前些年还有提案图形库还顺带搞进去按键输入的笑话。但是就所有权这块,除了 BS 的 observer_ptr 口水,还是别鸡蛋碰石头了 8 。
不管 Qt 怎么解释那个什么 tree ,需要人多记住特设规则的反人类的属性不会变。(这是导致不能方便打死 new 的背后的原因,但不仅 reviewer ,别的用户也被坑。)

>> Qt has its own ownership system that must be respected

Respect 包含直接不用。
就像 Rust 对付解决不了的破烂也有 unsafe 直球干掉保证这招。

> 工作上 C 艹 写的比你牛逼的人多的是

说真的,C 艹 写的不比你牛逼的,还真敢用 C 艹 嘴硬死不认怂歪理一套套,以至于我能毫不费劲一路婊到底都不太需要多过几次大脑的,还真没见过几个。
2022-09-02 20:05:06 +08:00
回复了 skywind3000 创建的主题 Vim 分享篇文章:为什么我会使用 Vim ?
@skywind3000 也不是说好为人师,就是看不惯人太菜,还污染环境。
(我才算是发现有人 at 我的用意了。)

0) 你爱怎么写是你的问题,但倒垃圾就是公德问题了。这是常识。

1) 当然菜鸡多的是,人家 STL 说,why is .h ever deprecated ?我还笑话他不懂 deprecated 是 discourage 呢。但是人家也没脸说“我爱怎么写怎么写”啊。

2) 画蛇添足一看就是丈育。废话多,浪费流量和硬盘,看着碍眼,难理解?

3) reinterpret_cast<char16_t*>还是 reinterpret_cast<char32_t*>都不决断的就别口嗨 ABI 了。当然 C 厨嘛,盲猜从不担心 TBAA ,本来还正好省事。
还好意思氵你乎回答大言不惭,谁让你脑补 xxx_ptr 就是 shared_ptr 的?倒是有另外一个跟引用计数没屁股关系的常见的 xxx_ptr 的常见实现还真就有臭名昭著的 ABI 问题,咋不提了?
v8 核心代码里是不是到处指针飞,不碍着它要是不那么辣鸡就更有性价比啊……但是 Google 的那啥 guideline 承认了,他们就缺脑子比较好使能把 C 艹 用对的人,那这现象又有啥不好理解的……

4) 真不想跟小朋友废话……github.com/FrankHB/pl-docs/blob/master/zh-CN/typing-vs-typechecking.md#%E7%B1%BB%E5%9E%8B%E6%AD%A3%E7%A1%AEtype-correctness
(虽然这个倒是真的建议所有人理解。)

5) 懒得看。

@ColorfulBoar 本来就不需要 LSP 啊,什么 LSP ,我就是人肉 LSP (战术后仰
除此以外别的 LSP 顶用?

不过带 template 套不套 inline (就算类定义里)倒是真的不大一样。(大概也就这原因 libstdc++里的类定义里的 template 经常有不省略 inline 的。)
至于代码生成,always_inline+flatten+noinline 明显更顶用点,但是的确有少数就得加上 inline 才会比较不那么欠揍的情况。(比起 github.com/FrankHB/YSLib/blob/master/YFramework/source/NPL/NPLA1Forms.cpp#L2598 或者#L3410 这类抽风当然还是小儿科了。)
1 ... 4  5  6  7  8  9  10  11  12  13 ... 92  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2794 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 13:16 · PVG 21:16 · LAX 06:16 · JFK 09:16
Developed with CodeLauncher
♥ Do have faith in what you're doing.