V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  secondwtq  ›  全部回复第 37 页 / 共 121 页
回复总数  2420
1 ... 33  34  35  36  37  38  39  40  41  42 ... 121  
2021-05-29 18:27:43 +08:00
回复了 ETONG 创建的主题 NAS 虚拟出来的 freenas 可以支持虚拟化吗?
Jails 也是 OS 级别的”虚拟化”,你说呢
2021-05-28 19:54:19 +08:00
回复了 vevlins 创建的主题 程序员 lowcode 是不是在断后人的路?
对于我们这种加速壬来说,断掉越多人的路越好。
当然如楼主所说,这货可能只有吹得好,实际并不能断掉什么路,那这种破事也是越多越好的。
2021-05-23 23:58:24 +08:00
回复了 samin 创建的主题 程序员 关于低(零)代码平台的看法
这么说吧,宣扬所谓“低”代码,“零”代码的人,他 /她的格局和水准,和这个代码的量基本是成正比的。

套用新闻界某著名人士的著名发言:

> 难道我们现在指望的是,做软件很容易,然后随便有手就能做,然后一点难度都没有,然后只要拍脑袋想出的功能,屏幕上点一点就实现了,不会吧?

> 不会吧?不会吧?!
作为做 LLVM 的来说一下吧,学 C++ 看 GCC 更像是“学开车去看发动机制造原理”,GCC 代码是 C 的底子,本身确实“跟 C++ 没啥关系”,LLVM 则是个彻底的现代 C++ 项目

首先,LLVM 早已经不是一个简单的“编译框架”,现在的 LLVM 既可以指狭义的“LLVM Proper”(这词是我自己 coin 的,只是为了区分,社区没这说法),即“基于 LLVM IR,提供优化和代码生成的框架”,也可以指广义的“LLVM Project”,即“以 LLVM Proper 为中心,由 LLVM 社区所管理的一系列项目”,LLVM Project 包含 “LLVM Proper” 编译框架,Clang C/C++/Objective-C/OpenCL/CUDA ... 前端,LLD 链接器,LLDB 调试器,libc++ C++ 标准库,compiler-rt 运行库,llvm-libc C 标准库,Flang Fortran 前端和 MLIR 等一系列项目,一起构成一个 monorepo,但是每个项目的实践都有或大或小的不同

对于一个非编译器相关的开发者而言,我认为 LLVM 最值得学习的是它的基础设施
LLVM 的核心理念之一是“把一切功能封装成一个库”,也就是说 LLVM 本体是“库”。LLVM 会编译出许多 executable,但是这些 executable 绝大多数都是对库的简单 CLI 封装( Clang 除外,因为要与其他编译器兼容,Clang 的 Driver 层做得格外重),也就是说你自己的程序里面也可以调同样的库来实现类似的功能。举个例子,比如 clang 带一个程序叫 clang-rename,实现了“重命名符号”的代码重构操作,但是这个程序只有几百行,功能实际是在 clang/Tooling/Refactoring/Rename 这个库里实现,而这个库又依赖于 Clang 的 Refactoring 库和语义分析库 ... 我自己就利用这个特性做过简单的代码生成小工具: https://github.com/secondwtq/einstein/blob/master/Einstein.cpp
把一切封装为“库”的目的就是最大化复用,也就是说这个理念背后的隐含意思是“基础设施能帮你做的都会尽量帮你做,你只需要写你自己需要的东西就行”
比如说 LLVM 提供了一整套的容器和数据结构,这些基本上都是通用的,很值得一看
LLVM 的若干公用模块大量使用了模板
LLVM 大多数模块都天生非常适合自动化测试,LLVM 也有完整的测试设施,常用的有 gtest 单元测试,LIT 测试和运行时集成测试三级。做编译器经常出现改东边的东西影响到西边的测试的情况,针对这种状况 LLVM 给你准备好了自动更新测试用例的脚本。
作为一个通用的编译器框架,LLVM 支持很多指令集,不同指令集通用的算法(如指令选择、寄存器分配等)被封装成了一个叫做 CodeGen 的库,而针对每一个指令集的支持都是一个单独的模块(前两个月刚有人搞了个 68000 的支持 ...),每一个指令集都需要定义大量的指令,为了解决这个问题,LLVM 搞了一个叫 TableGen 的 DSL 做代码生成,这个东西统一地解决了指令集定义、指令选择、调用约定、微架构细节定义、CLI 选项定义等一系列问题。这么一整套框架做下来,添加新指令集,添加新指令,很大程度上都是重复性工作。

另外,抛开 LLVM 源码来说,学习 C++,不可不学各种新的工具,而 Clang 占据了半壁江山;不可不了解编译器优化,一般非编译器开发者研究优化都是看汇编,也就是看个一头一尾,但是了解 LLVM IR 就能看中间;不可不看 CppCon 等前沿实践,而其中最有趣的之一就是 LLVM 社区大佬 Chandler Carruth 的基于自己开发经验的系列演讲

不足的地方:
LLVM 作为传统的编译器(也就是说还是主要面向 C/C++)整体设计并没有偏离传统太多,后果之一是里面跟多线程有关的东西很少(因为传统编译器不需要这玩意,直接多进程点到为止就行了),还有一堆全局状态,学这方面的你得另请高明
编译时间太 TM 长 ... 普通 PC 少说半小时吧,我用服务器也得 10 分钟,而且还很大,GCC 就很快(但是好处是需要的依赖很少,只是吃 CPU 而已,基本不用折腾,浏览器则是真正的 worst case,代码量和依赖都很多)
说是把所有东西都做成了库,实际上不同的库之间是互相依赖的,加起来光库就有好几十 M,也就是说很难做到单独拿出一个东西能用。这个理念的意义更主要还是在于,只要你依赖了 LLVM,里面的东西可以随便单独拿出来调用——但是前提是你依赖了 LLVM,这个逻辑就好像“你如果入了苹果的坑,很多东西都会看上去很好(之所以‘看上去很好’是因为金玉其外败絮其中),但是你必须听苹果的话”( GitHub 上甚至有人做把 LLVM 项目里面特定模块单独拎出来的项目)
如果你是 LLVM 的用户,你会发现它的 API 也不是很稳定,很多老项目都直接钉死某一个 LLVM 版本,因为维护成本不低(这进一步说明了 LLVM 的“现代性”:写程序一把梭,刷版本号就得了)
2021-05-23 11:23:25 +08:00
回复了 Livid 创建的主题 游戏开发 MagicaCSG
hmm 总感觉单纯 CSG 的能力是有极限的,能结合 loft/sweep 和雕刻之类的,或者干脆和 MagicaVoxel 结合起来会更好
2021-05-21 22:32:59 +08:00
回复了 noogler67 创建的主题 职场话题 基层工作选择, b 站和特斯拉
芯片大佬 Jim Keller,LLVM 和 Swift 项目创始人 Chris Lattner 都在特斯拉呆过
然后没待两年就走了
也许是他们觉得自己不配跟 Elon Musk 这么优秀的人共事?
你这还真是方向问题,类似的东西许多静态类型语言都有”参照”,但动态类型语言里面就是不好找
Swift 里面叫 protocol
Go 里面叫 interface
Rust 里面叫 trait
C++ 里面叫 concept
Haskell 里面叫 typeclass
ML 里面叫 module
Java/C# 里面也叫 interface

动态类型语言 by definition 一般没这习惯…
2021-05-21 22:04:49 +08:00
回复了 vevlins 创建的主题 程序员 程序员工作量的主要来源
好像讲软件开发的很多书和文章都表达过一个观点,软件中的 Complexity 分两种,一种叫 Intrinsic Complexity,另一种叫 Incidental Complexity
可以参考一下
2021-05-12 19:45:08 +08:00
回复了 Xavier08 创建的主题 程序员 大佬们怎么学习官方全英文的技术文档
@IgniteWhite 感谢详细的回复!我也觉得了解其他语言能够帮助建立起一种”联系”,虽然这种所谓的“联系“在实际中用处确实不大,但是自己知道了就感觉很有趣。
我查英语新单词也的时候也会瞟一眼 etymology,大致感觉是常用词日耳曼起源居多,“高级“词汇拉丁语 /希腊语起源居多,也是非常乱…
2021-05-11 23:45:42 +08:00
回复了 wisetc 创建的主题 分享发现 千万不要学前端
标题有问题。倒是第一段“千万不要来选做前端工作。”很贴切

“学前端”和“干前端”是两码事。
2021-05-11 23:16:45 +08:00
回复了 Xavier08 创建的主题 程序员 大佬们怎么学习官方全英文的技术文档
@IgniteWhite

> 现在我英语积累越多越感觉自己菜了,于是辅修了德语,考了几个基本的欧洲德语水平证书。

有点好奇,能不能说下学德语有什么帮助?
> 以熟练英语交流,能胜任外企工作为目的的话,有什么靠谱的学习、练习英语渠道吗?

去外企 ...
2021-05-11 22:42:35 +08:00
回复了 Livid 创建的主题 NVIDIA NVIDIA 的最强 RTX Demo Marbles 现在可以免费下载了
2021-05-09 00:01:21 +08:00
回复了 Biwood 创建的主题 MacBook Pro 生活在南方的朋友是不是都不怎么用触控板?
“没有在北方时那么干爽顺滑了”
楼主是有对比吧
我是大陆北方网友,但是从第一次用触控板到现在都是在南方,所以无所谓
2021-05-08 21:52:47 +08:00
回复了 Ritr 创建的主题 北京 跟大家分享下我是如何省钱的
那如果我告诉你,你存的钱也会被银行贷给大资本家呢?
2021-05-07 19:08:53 +08:00
回复了 3dwelcome 创建的主题 问与答 有哪位 C++高手,能看一下 Windows 注册表的代码原理?
硬看源码咋可能看得懂 ... 看源码之前先找设计文档,相关团队发出来的文章,相关的 Talk,Windows 这种带项目更方便,有书,Windows Internals 里面肯定有相关章节
就算真要看源码,也是先看注释再看具体实现

https://stackoverflow.com/questions/10364281/windows-registry-hive-files-documentation

当然很多项目上面都没有 ... 这时候看源码是最后的 fallback
2021-04-30 22:23:52 +08:00
回复了 pythonee 创建的主题 程序员 日常工作中,你都会画哪些图,用什么工具画
演示同样需要画各种框图,工具 PowerPoint,中性笔和马克笔
2021-04-30 22:22:11 +08:00
回复了 pythonee 创建的主题 程序员 日常工作中,你都会画哪些图,用什么工具画
代码注释会画各种框图,工具 asciiflow.com
可以不局限于壁纸,各种软件皮肤都可以考虑,这是 PC 端。本站用户应该不会太在意 PC 端壁纸( tiling window manager 用户再加上软硬件性能拉跨关掉了 compton 的表示壁纸是什么)
倒是手机平板壁纸可能见的多一点,还有 IM 聊天背景啥的,不过移动端能定制的也就这些了,整个就一审美教育平台,基本设计师觉得什么好你就得觉得什么好

总之不是很友好
1 ... 33  34  35  36  37  38  39  40  41  42 ... 121  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5156 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 543ms · UTC 08:44 · PVG 16:44 · LAX 01:44 · JFK 04:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.