V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  secondwtq  ›  全部回复第 88 页 / 共 123 页
回复总数  2453
1 ... 84  85  86  87  88  89  90  91  92  93 ... 123  
2019-06-30 15:24:53 +08:00
回复了 WhoCanBeRich 创建的主题 问与答 问一下关于 iOS 的问题呀,性能重写方面的
Person 是你软件中的一个组件,所谓类 /方法是编程语言提供给你的实现组件的方式。软件的高层设计其实和具体语言的关系并不大。编程语言会灌输给你各种奇怪的名词概念,比如同一样东西,iOS 叫 protocol,Java 叫 interface (而 ObjC 的 interface 则更像是 C++ 的 class declaration ),虽然细节有区别,但是大体意思是一样的,这就是所谓的不同编程语言间通用的东西。比如你在学 protocol 的用法,其实在了解了基本语法之后,可以顺便看看 Java 的 interface 是怎么用的,Scala 的 trait 是怎么用的。

所谓的类和方法某种程度上也算是编程语言给你灌进去的东西——虽然严格上来说并不是,但是我觉得一个程序员应该掌握脱离类等概念进行软件设计的能力。iOS 相关的资料自然会鼓励你用他推荐的语言和工具,让你习惯于他自己的那套玩法,所以楼主发现自己需要学习相关知识时,居然是由于“性能”的缘故,而我觉得这方面能力的意义并不仅仅在性能上。

楼主所提到的这个过程应该属于所谓的 modular design。通俗的说,假设我们现在不是在重写 ObjC 的 Person 类,而是用 C 写一个哈希表。那你会先考虑用什么算法,需要哪些操作,这些操作的接口是怎样的。比如 C 不会给你构造函数或者 init 函数,你得自己实现一个 hash_table_create 函数,还有对应的 hash_table_free 函数,没有类和方法,那你就不能定义 size() 方法,而是定义 hash_table_size 函数。C 不能像 C++ 或者 Python 一样做 [] 运算符的重载,那你得实现一个 hash_table_get 函数,你会发现虽然没有高级语言的工具,程序还是能照常写,这是最基本的要求。

再深一点你会考虑如果我实现一个红黑树会是什么样的接口,红黑树的接口和哈希表的接口有什么区别,哈希表要不要暴露出 bucket 数目、允许用户自行 rehash 之类的细节,甚至“使用同一个哈希表 /红黑树的实现来实现集合和关联数组两种模块该如何设计”之类的奇怪问题。

这类入门书建议看 C Interfaces and Implementations (简单了解没必要看书,看看公开的示例代码就行),休闲可以看 A Philosophy of Software Design 之类的

Swift 具体实现不了解,查了一下,按照 https://allegro.tech/2014/12/swift-method-dispatching.html 这篇文章的说法,Swift 方法调用经过编译器优化后实际是与 C 实现等价的。
2019-06-30 14:18:17 +08:00
回复了 noli 创建的主题 Python [可能引战] 用过 Python 也没法理解为什么 Python 是个好语言
@noli numpy 是一个软件,GPU 是一种硬件,你既然写过虚拟机应该知道这俩是没法拿来比的

我的理解一般把 Python 当成“好语言”的人,并不会对自己所使用的语言特别认真,也就是说换成 PHP 他们也会说“好语言”,此类群体一般会持类似“能解决问题的语言就是好语言”“语言最重要的是生态和背后的爹”之类观点

之所以现在吹 Python 的比吹 PHP、Ruby 之类的多,因为 Python 的适用范围比 PHP 广,智商兼容性比 Ruby 高
2019-06-30 02:06:52 +08:00
回复了 vsitebon 创建的主题 分享发现 一个学习的秘密,不要用笔记本电脑做笔记
补充:仔细看了一下,我开始把主楼“作为一个一直在写相关的学习方法之类的博主”看成了“原文作者一直在写学习方法之类的博客”。如果我没有犯这个错误应该不会有 #47 的回复。
2019-06-30 01:54:42 +08:00
回复了 vsitebon 创建的主题 分享发现 一个学习的秘密,不要用笔记本电脑做笔记
@vsitebon 我这个评论和这个特定的文章本身并没有直接的关系,因为我看了不少同类的文章,我这个评论是针对这一大类的文章的,并不是针对特定的这一个

我知道这是个学问,但是我看了这些文章下来的感受是:有这么一群人,天天就写这些文章,录视频,到处演讲,但是这群人除了干这个之外就没有别的产出了,这对我来说是缺乏说服力的

举个正面例子,前段时间看到这么一篇文章: https://zhuanlan.zhihu.com/p/55804099,虽然对于所谓学习科学来说应该完全是外行人,但是这个作者平常有不少干货产出,技术上的品味我觉得也不错,所以这篇文章我来回消化了不少遍(我关注他并不是因为好奇他如何学习,这篇文章属于意外收获)

另一个感受是,部分此类文章会以某些学霸作为例证,但是我认为学霸本身就属于特殊情况,以特殊情况来举例是不科学的,并且同一套方法在不同人上的适用度可能是天差地别的。况且养成学霸的因素并不仅仅是所谓方法与技巧,我学到了方法也并不一定能成为学霸——正如一个富人告诉你他如何赚钱,而你并不一定能复制(其实该富人更大可能会说“勤奋努力”之类的鸡汤,然而这只是非常普通的一个必要条件,并不一定是最重要的条件),我其实倾向于认为相当一部分所谓学霸主要是自身天赋,一般人很难学来

最后我的大体感觉就是我觉得所谓学习科学离普通人还是挺远的。它能总结出一些通用的原则和规律(比如本主题说的“初次学习时更多的思考能有更好的效果”),但是(此处 assume 上文的条件)既然方法并不是学习好的最重要原因,它作为一门学科本身又自然地有数不清的流派和观点(就比如本主题标题的观点就尚不能得到大多数人的共识),最重要的是您也强调了“实际对方法或工具对效率上的提升进行测试非常重要”(我个人持相同观点),那么对一个没有专业指导的普通人来说,相比于实际练习,在这类文章上花费更多时间的意义非常有限。(注意我并未将此类文章等同为学习科学本身,我的观点是靠科普文章是无法真正入门一个学科的,而更深入地了解一个学科本身就需要更多的时间,每个学科的 advocate 同样每天都在鼓吹我们多重要我们是什么什么元学科,我为什么放着其他同样有用或者有趣的学科不学把时间花在这个学科上面呢?)
2019-06-30 01:00:01 +08:00
回复了 yongzhong 创建的主题 天黑以后 20190630 午夜俱乐部
@vtea 看你干什么,我的看法是任何开发板(哪怕强如树莓派 4 )主要面向的是 hardware hacker。如果要做任何对性能有高要求的任务,我自己的调查结果是从每 FLOPS 的性价比看最好的是 GPU (能耗上可能也是),对通用性有要求的话则是捡 x86 的垃圾
2019-06-30 00:39:20 +08:00
回复了 vsitebon 创建的主题 分享发现 一个学习的秘密,不要用笔记本电脑做笔记
太长没来得及看,我其实挺纳闷这些”天天写学习方法“的人,天天除了”写学习方法“之外,都学了什么学了多少
2019-06-30 00:35:39 +08:00
回复了 keith1126 创建的主题 问与答 迫于没有钱,在哪里买计算机技术书籍性价比高?
另外不知道楼主要买啥书,看书最好挑一挑

比如有个梗是程序员喜欢动物书,但是我发现动物书可能不是很适合学生,他们家书我现在只留了 RWH,RWO,DDIA 和 Effective Modern C++ 四本,想买的书里面优先级比较高的一般也是 Addison-Wesley、MIT Press、Cambridge University Press、Morgan Kaufmann 之类的
2019-06-30 00:22:08 +08:00
回复了 keith1126 创建的主题 问与答 迫于没有钱,在哪里买计算机技术书籍性价比高?
孔夫子旧书网 可以看一下,能不能找的到,价格都是随缘

我们学校做项目可以报销一点钱,买两本书是够了
另外实验室也有书(虽然一大半是我自己买的 ...

其实这问题无解,全世界范围内无解
国内出版社只引进流行的书,大多数翻译版,少部分影印版,稍微深一点、偏一点或者小众一点的国内就找不到了
大爆款如果没有其他原因的话,一般是有引进的,但是选择非常受限,价格也不一定能优惠
另外国内计算机书籍貌似本来就偏贵
同类书籍到国外也是偏贵,而且国外只有贵的书卖,但是一堆人上学都还贷款呢,所以这也成了问题了
买一本不那么水的稍小众的未引进的书,同样的价格在国内一般可以买 4-7 本书,我的渠道还没有运费和税,所以其实我觉得对于学生来说这方面算是占便宜了
2019-06-29 23:36:22 +08:00
回复了 evilbinary 创建的主题 Lisp 一款 lisp 写的基于 GPU 渲染的编辑器
好像在哪见到过

不过就标题提一点,我不认为一个编辑器应该以“ GPU 渲染“作为卖点,GPU 渲染会让实现更复杂,灵活性受限,唯一的优势是在性能上。然而就现在大家 IntelliJ 用得这么欢乐的状况,我不认为多少人会在意这个性能

另外其实 neovim 和 vscode-remote 之类的出来之后,我觉得编辑器做成 C-S 架构的可能是趋势,在 server 上起一个服务,然后在桌面、Terminal、Web 和移动设备上都能连。Vim 和 Emacs 其实在这方面比 VSCode 之类的友好—— Vim 和 Emacs 都能直接利用 X11 Forwarding,网络稍微差点都没关系,VSCode 就怎么都必须起一个 chrome,而且效果还没那么完美

另外 GPU 渲染 2D 内容很 tricky,优化不好的话性能难说,我上次试了某个 GPU 加速的 terminal emulator,在核显上东西一多会感觉到卡顿,虽然有可能是 CPU 的内容处理没做好,但是貌似换了独显就好了
2019-06-27 22:08:37 +08:00
回复了 abmin521 创建的主题 Apple apple 似乎没有什么开源的东西?
补一句忘说了… 对标另一个做基础平台的最近疯狂搞开源的公司,开源世界的爹 MSFT:
dotnet 可以对标 LLVM+Clang+Swift+一堆库(如果你不用 Win 也不用 macOS 的话其实你大概不会用 .net 或 swift,但是 LLVM 和 Clang 八成绕不过去。coreclr 是 JIT+GC,LLVM 偏向于静态编译(并且 C,C++,Obj-C 和 Swift、Rust 都是没有 tracing GC 的))
TypeScript 我个人认为是 C# 在前端圈,或者所谓大前端的延伸,因为 C# 一大半还是在做 server 做工具,Apple 基本是专注于自己的用户端(估计没几个知道 Mac OS X Server 和 XServe 的,连 Airport 都停了),所以其实还是对标 Swift
XNU 可以对标 WRK (两者在“对大多数人没啥用”这点上是完美 align 的——要是学 OS 你八成还是会去用某个教学 kernel 去走一遍某个公开课,然后去读 BSD 或者 Linux kernel 源码)(顺便 MSFT 还开源了 MS-DOS ...)
Security 可以对标 SymCrypt ( MSFT 前段时间刚开源的 Windows 加密库)
MSFT 的 VSCode+LSP 无敌,就连 Apple 都在自己 org 底下默默放了一个 sourcekit-lsp 仓库
但是别笑,Apple 的孙子 Blink 前段时间刚吃了微软亲儿子 MSHTML ...
(所以现在的局面是,MSFT 的 ChakraCore 和 Apple 的 JavaScriptCore 都在 V8 的淫威下瑟瑟发抖( SpiderMonkey 不配拥有名字么?)
MSFT 开源了 PowerShellCore 以及这两天 trending 的 Windows Terminal,Apple 表示不慌,咱先把 macOS 的默认 shell 改成 zsh ...

MSFT 开源了 WTF,哦不 WTF 是 WebKit 的,是 WPF,Apple ... 你敢开源 AppKit 么?或者开源个 SwiftUI 也行啊
(虽然 WPF 开源了但是还是不能直接移植 Windows GUI 程序,不过我个人觉得 WPF 是 Flutter 和 SwiftUI 的先声,只是时运不济 ... 好了我去看 Pro WPF in C# 2012 了)

这么一看 Apple 的 open source portfolio 其实并不弱。当然和 MSFT 的体量还是没法比:Apple 的黑科技一半在硬件上(可惜开源硬件刚烧起小火苗),并且 MSFT 现在是把开源当成重要战略在做,你看看 Apple 现在是什么战略,吃老本+薅羊毛?

就不说 MSFT 在 AI 等方面是 Apple 没法比的,这个 Apple 也有借口:” The ‘ s ’ in Artificial Intelligence stands for ‘ security ’, and the ‘ p ’ in Artificial Intelligence stands for ‘ privacy ’”。在我看来 MSFT 真正的杀手锏是 Microsoft Research:Z3,GraphEngine,Koka 等项目对于 Apple 来说完全超纲了,更别说那一堆 paper
2019-06-27 21:30:44 +08:00
回复了 abmin521 创建的主题 Apple apple 似乎没有什么开源的东西?
如果你只做互联网,那对你来说就只有 Swift,如果你只做互联网,并且对其他领域毫无兴趣,那么一辈子你都只知道 Swift


Apple 开源的东西不少,不过有个特点,很多项目都是买过来之后开源的(或者说不是完全原创的)
Swift 所依赖的 LLVM 是买 UIUC 的,但是 Apple 前期的支持对 LLVM 的成长起了非常重要的作用,现在 LLVM 社区已经是典型的大公司支配的开源社区,Apple 的主导权被 Google 分了一半了
另外 LLVM 不是单独一个项目,还有 Clang 前端、libc++ 标准库、LLDB 调试器、lld 链接器等子项目,当然 Apple 应该不是在所有子项目中都活跃的。Swift 和 LLVM/Clang 同出 Chris Lattner 之手,翻一下会发现这些项目的代码风格是非常相似的
除了 Swift 之外,LLVM 还是 Rust、Julia 等语言的基础,AMD 的 AOCC 以及 GPU 驱动也是基于 LLVM 的
Swift 所依赖的基础库 Foundation 也是一块开源的,但是 Objective-C 版本的 Foundation 貌似并没有开源,虽然如此,这俩库共同依赖的 C 库 CoreFoundation 却是开源的
为 Swift 提供智能提示功能的 SourceKit 是开源的,我没看过源码,猜测这个应该是严重依赖于 Swift 编译器本身的
Apple 为 Swift 和 OC 钦定的并行解决方案 libdispatch 是开源且跨平台的
WebKit 是当年 OS X 需要一个浏览器,于是就 fork 了 KDE 的 KHTML 和 KJS,由于 KHTML 当时貌似是 LGPL 协议,所以 WebKit 原则上是必须开源的。后来乱拳打死老师傅,现在没人知道 KHTML 了。之后历史又重复了自身,WebKit 被 Google fork 出的 Blink 乱拳打死老师傅
需要注意的是 WebKit 也是个巨型项目,内部包含 WTF、WebCore、WebKit、JavaScriptCore 和 WebInspector 等多个子项目

UNIX 系统标准的打印机管理系统 CUPS 是 Apple 买过来的,现在是开源的,之前是不是不知道
Apple 还买了个数据库软件 FoundationDB 开源在 github 上
此外 Apple 平台的 OS 内核 XNU 一直都是开源的,这个也是拼的 BSD 和 Mach,需要注意的是虽然 kernel 开源,但是在换到 x86 之后就没有完整的开源驱动栈了,Apple 官方关于驱动的资料也非常稀有(尤其是非桌面平台),间接导致 XNU 内核的开源系统失去了意义。XNU 源码树里面还包含 Apple 的驱动框架 IOKit,号称可以写跨平台驱动,然而实际只能写 XNU。总之摆明了就是跑 Apple 系统只能用 Apple 硬件。所以这个应该算是 Apple 最没用的开源项目 ...
此外还有一些底层组件如 dyld、Security、Objective-C 和 Swift 的 Runtime 等是开源的,不过这些东西如果不是 hack Apple 平台的话貌似没人关注

除此之外 Apple 还合作参与了若干技术标准和开源项目,比如和微软合作的 TrueType,Apple 自己还提出了 OpenCL (可以看下 OpenCL 的 Logo,很明显的 Apple 风,和 Khronos 其他标准都不一样)。Apple 在 W3C 也有很强的存在感,不过这个不好统计具体有哪些工作。
不过 Apple 对技术标准的态度让人很纠结,比如对 OpenType 的支持不是很好,为了推 Metal 直接 deprecate 了 OpenGL 和 OpenCL,并且一直没有 Vulkan 的官方实现之类的奇葩事情

Apple 曾经试图把最好的文件系统 ZFS 集成到自己平台上,不过最后项目死了,直到最近几年才换到了 APFS。Apple 也集成了最好的动态跟踪工具 DTrace,现在的 Instruments 就是基于这玩意的。这俩东西一开始都是 Sun 开发的,不知道 Apple 参与了多少。现在 Linux 上面的支持貌似还不是很成熟,想用的话欢迎入 FreeBSD。

有一点需要注意的是 Apple 技术上的核心竞争优势之一:桌面环境和 GUI 框架( AppKit 和 UIKit )一直没有开源,很多周边的核心框架( CoreGraphics 等)也没有开源,不过我个人倒是觉得对于学习目的来说,这类项目的 API 设计重要性远超实现,倒是 LLVM、JavaScriptCore、Security、RTS 和 libdispatch 这些库的实现、优化细节都是非常重要的。

哦对了还有最重要的:Apple 最大的优势其实还是钱,Apple 的母公司曾经向 OpenSSL、OpenBSD 等开源项目捐赠数百万元
2019-06-26 02:38:11 +08:00
回复了 xinyu391 创建的主题 问与答 国外大神新出了个 Vlang
@msg7086 https://en.m.wikipedia.org/wiki/Assignment_(computer_science) 看起来是 ALGOL 开始的,C 系用 = 反而像是例外
2019-06-25 20:28:37 +08:00
回复了 Aresxue 创建的主题 程序员 编程浅谈-以一个初出茅庐的 Java 程序员视角
again,这说的是互联网技术,不是编程
2019-06-25 19:48:47 +08:00
回复了 AsceticBear 创建的主题 Python 国内拥抱开源项目公司都有那些啊?
RedHat?
@yedanten 为什么要关优化?
你可以去看下 LLVM 的代码,大块的 switch 满天飞
2019-06-25 19:17:37 +08:00
回复了 wsseo 创建的主题 问与答 IT 行业,哪些领域更注重测试?
我觉得你标题是想写互联网行业
2019-06-25 00:07:21 +08:00
回复了 justou 创建的主题 程序员 即将去某超算中心工作
@ryd994 你也可以为加速人类灭亡做贡献
2019-06-24 20:34:18 +08:00
回复了 justou 创建的主题 程序员 即将去某超算中心工作
@tison 互联网的分布式跟 HPC 的分布式貌似不是一个分布式 ... HPC 更偏向于并行方面

HPC 我理解主要还是算法模型方面,把计算资源利用起来就行,细节底层库去处理,比如 HPC 可能很少考虑某个机器 down 掉了怎么办之类的
DDIA 这个就完全就是面向用便宜货的互联网吊丝的,你把这东西给 HPC 的人看,就冲全书对 GPU 都只 字 未 提这一点,人家就会觉得这不配 "Data-Intensive" 这个名字
1 ... 84  85  86  87  88  89  90  91  92  93 ... 123  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3521 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 49ms · UTC 00:44 · PVG 08:44 · LAX 16:44 · JFK 19:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.