V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  secondwtq  ›  全部回复第 63 页 / 共 123 页
回复总数  2442
1 ... 59  60  61  62  63  64  65  66  67  68 ... 123  
不过就楼主这个需求而言,目测完全不用“装”软件,PowerShell 试下
没管理员权限≠不能装软件
2020-01-20 19:22:36 +08:00
回复了 stancaohua 创建的主题 程序员 OSX 生成 Linux 可执行文件
你编译好了 Linux 文件直接交上去么?没个 Linux 环境测试怎么知道能不能用
2020-01-20 19:11:31 +08:00
回复了 strahe 创建的主题 服务器 有没有一种 SSD 和 HDD 的混合文件系统方案?
@Remember 写入的话应该是加 SLOG 吧
2020-01-20 19:10:08 +08:00
回复了 strahe 创建的主题 服务器 有没有一种 SSD 和 HDD 的混合文件系统方案?
你写太快把 SSD 挤满了不还是没办法 ...
2020-01-17 23:34:40 +08:00
回复了 KunMinX 创建的主题 奇思妙想 人绝不是从猴子进化而来
科学有两种作用,解释,以及预测。科学本身就不是用来“相信”或者“质疑”的。

我在 https://v2ex.com/t/636465#r_8459702 这个回复中提到了 Evolution 是生物学的“Unified Theory”,因为大家发现,用非常简单的规律,不需要假设神的存在,就能解释很多生物的起源问题,以及生物中观察到的许多现象(比如人体有很多不完美的构造和无用的器官)。
一套理论被提出来之后,大家除了用已有的东西去套之外,还会派生出新的东西。比如有人设计了光线弯曲实验来验证广义相对论。实验成功了,给广义相对论提供了新的 proof。但是并不能说广义相对论被“证实”了——只要有一个反例,就不能说它是完美的。但是人们在设计相关的应用时,已经可以假设它是对的——因为暂时也并没有更合适的理论可以用。每一个成功的预测和应用都可以给这个理论的“可信性”添砖加瓦。而如果发现了漏洞,就正是完善理论或提出新的理论的时机。

理论就是个工具,好用就用,不好用就扔。你“相信”或“不相信”这个理论其实并不重要,只是你可以在特定的情况下,假定他说的东西是“真”的,然后 derive 出你自己的东西来。
这是课本没教的。大众对于特定理论的盲从确实是课本的锅(但不是生物课本的锅)。
至于科学界对于特定理论的“盲从”是因为这个理论确实好用。它是不是“究极真理”无所谓,科学界只在乎能不能解释现有现象,以及在此基础上能不能整出些大家还不知道的新东西。
如果想把自己的“质疑”上升为科学界共识,很简单,只要你自己是个天才,提出一个更好用的理论就行了。

但是如果你认定自己没有这个本事,那还是看看自己能在现有理论上做出什么东西来:
你如果假定智能设计是真的,那你就可以考虑是甚么样的存在设计了我们,有没有办法诱导设计者,这个设计有什么 bug,人类有没有可能成为新的设计者之类的问题。
你如果假定 Evolution 是真的,那你就可以考虑如何进行人工选择,如何应对抗药性问题,包括遗传算法之类也是受此影响出现的。(另外还有“极其简单的东西可以通过巨量的随机过程构成部分有序且极其复杂的东西”这个我暂时不知道有什么实际应用的推论)
2020-01-17 22:11:42 +08:00
回复了 Poto 创建的主题 程序员 如何让程序 100%占用 cpu 资源以便快点完成任务
你把其他的核都关掉就行了
2020-01-17 22:09:30 +08:00
回复了 KunMinX 创建的主题 奇思妙想 人绝不是从猴子进化而来
不如研究一下更近一点的,埃及希腊的文明是不是文艺复兴时候的人“发明”出来的问题?
2020-01-16 23:12:10 +08:00
回复了 darmau 创建的主题 分享创造 [代发布]wikipedia.rehash:对 Wikipedia 的简单重排版
楼主觉得 Wikipedia 原来的排版问题在哪呢
2020-01-16 23:04:12 +08:00
回复了 xiaotuzi 创建的主题 PHP 关于 thinkphp 与 swoole 合作而引发的国内开源问题
我感觉 Swoole 的做法没啥问题,但是看上去有些话可能说得过分了点伤了人心
2020-01-15 23:25:51 +08:00
回复了 king888 创建的主题 问与答 美团王兴“怒”删百度 app:浏览器搜索百度内容总是要跳转
话说马云有微信么
这些大佬们真的敢装其他公司的 app 么
2020-01-15 23:24:11 +08:00
回复了 dioxide 创建的主题 分享发现 JetBrains 发布了它们的等宽字体!
人家说了人家就要“simple and free from unnecessary details”,目测就是在暗指 Fir*a* Code

这个演示页面的动画感觉挺好的,但是没有提供自定义预览,只能看深色背景,固定字号,固定内容的预览 ...
2020-01-13 19:02:35 +08:00
回复了 xiaohantx 创建的主题 分享发现 iPad os 也能当敲代码的生产力工具了。
这东西我在 Linux 桌面用都嫌不够好用,还有脸搬到 iPad 上 ...
2020-01-13 19:01:21 +08:00
回复了 IMFFA 创建的主题 JavaScript 请教一下,怎么把这段代码换一个优雅的写法
语言只是表达计算的工具,就算楼主的项目不能用 ES6+,人肉 babel 把楼上的 Snippet 改改也能用。
2020-01-13 18:59:02 +08:00
回复了 pmispig 创建的主题 Go 编程语言 请问怎么解析用户输入表达式
当然是用正则,Go 的正则库很好用
"浮点运算结果不准确"恰恰是预期行为,因为浮点数的定义就决定了它必然”不准确“,浮点数本身就是一个 approximation。

这和 primitive 的整数有有符号和无符号之分、范围限制、溢出问题之类某种程度上是同一个性质。同样我们可以问:primitive 整数有溢出是不是 bug ?
不同的在于,primitive 整数溢出可以是 bug——一些编程语言包含了边界检查的语义,在出现溢出时会抛出异常。但是浮点运算从定义上就是不准确的,因此不算做 bug。
之所以说它们有共同之处,是因为它们都是在计算机上实现计算过程时做出的妥协。

比如说,Java 有 Primitive Type 和非 Primitive Type 之分,Primitive Type 成为了 Java 的”一切皆对象“原则上的一个漏洞( web.archive.org/web/20081012113943/http://www.eecs.harvard.edu/~greg/cs256sp2005/lec15.txt )。可见 Primitive Type 造成的问题不仅仅是“运算不精确”一个。楼主的问题”为什么至今仍然有很多开发语言有这个问题呢“首先需要解决的是“既然 Primitive Type 如此麻烦,为什么还要保留 Primitive Type 呢?”并且不只 Java,几乎所有编程语言都具有 Primitive Type,这是为什么呢?

理论上,使用非常精简的规则,即可表达出所有计算需要的东西,包括数字( https://en.wikipedia.org/wiki/Church_encoding ),因此,Primitive Type 在理论上是不必要的。但是在实际应用的编程语言中,很少有大量应用 Church Encoding 的,相反,Primitive Type 被广泛使用。
因为“In theory, theory and practice are the same. In practice, they are not.”

如果把整个计算机看做一个系统的话,编程语言是开发者和计算机之间的接口,ISA 是软件和硬件之间的接口,这些接口都是越简洁越好。图灵机的基本规则也非常简单,如果只是实现一个计算机的话,几条指令完全够用了。
上世纪著名的 PDP 系列有很多是硬件不支持乘法 /除法操作的。Intel 在 8086 之前也不支持,而一直到 486 之前,浮点运算还要靠 Coprocessor。一直到现在的 RISCV,乘除法、浮点还是 Extension,核心指令集只有不到 50 条指令。这个规模并不比 UNIX 最早用的早期 PDP-11 要小多少。
同样的原则可以推出,GPU 所做的工作 CPU 也可以做,GPU 是完全没必要的东西。老黄赚的钱全是炒概念的智商税,AMD 也没必要养着 RTG。包括挖矿什么的也可以通通使用 CPU 搞定。
但是另一方面,RISC-V 也有各种扩展(很多还没做完),现在的 x86 算上各种扩展已经有了一千多条指令。ARM 的核心指令集规模和其他 RISC 类似,但是随便一个 SIMD 扩展甩出来就是几十上百条指令。而现在不仅 CPU 和 GPU 很火,还加入了乱七八糟的 FPGA、TPU 之类的东西,老黄还多此一举的把 RT core 做进了 GPU 里面。这似乎与我们所追求的简洁构成了某种矛盾,最重要的是,老黄又赚了我们一波智商税。

我在 V 站说明过“编程语言的设计可以影响给到编译器的程序信息的量,进而影响优化编译器的优化效果”( https://v2ex.com/t/632869#r_8401400 )以及“高级语言抽象好,低级语言上限高”( https://v2ex.com/t/594287#r_7803885 )的原理。同样的原则也适用在硬件上——硬件在执行计算时需要“我要执行什么计算”的信息,而 Church Encoding 之类的通用表示方法之所以没法用,就是因为它太通用了导致硬件得到的信息太少,执行效率太低——一个 C++ 程序可以被编译为机器码,但是给你一坨 C++ 编译出来的机器码(经过较多优化,无调试符号),不能反编译出原始的 C++ 程序,甚至就算再把原始 C++ 程序给你,把 C++ 代码和机器代码的位置对应起来在没有调试符号的情况下都是个难题,大量的高层程序信息在转换为具体的、底层的机器表示的过程中逐渐不可逆地丢失了。现代 CPU 会利用各种手段以利用更多的程序信息,达到更高的执行效率,但是当程序信息本身就不足时,硬件厂商也无能为力,所以现在硬件厂商宁愿教育开发者多写 “Modern Code” (虽然最后开发者还是更喜欢 Electron )来最大化硬件使用率,提高执行效率(这里的极端便是上个十年的 VLIW 架构——抛弃 CPU 部分的 hack 来简化硬件,寄希望于软件(包括编译器)能给出更多的信息)。另一方面,硬件厂商需要给出用来表示高效代码执行所需的接口,这就是各种乱七八糟的指令集扩展和非通用硬件。
硬件本身则通过 Chip Specialization 的方法,来最大化这些信息的利用。什么是 Specialization ?比如说我们知道整数 a * 8 等价于 a << 3,那么编译器如果有“a 是整数”和“表达式 a * 8”这样的信息,便可以把 a * 8 specialize 为 a << 3。Specialization 要求获得足够的信息,如果编译器不知道 a 的类型,或者遇到“a * b”这样的表达式( b 的值无法推导),就没有办法做 Specialization。
半导体中的 Chip Specialization 则是指对特定已知的计算,直接使用芯片硬件电路实现,而不是用通用的方法(先实现一个图灵完全的指令集,弄一个 CPU,再写软件实现算法)。这样做可以用更少的功耗,对特定计算实现更高的性能——因为算法直接在硬件实现,并且会用经过优化的方法实现。用软件实现和用优化的硬件实现的区别,就像用 Python 实现 FFT 算法性能不如直接调用 scipy 库一样——Python 直接实现的算法,在运行时除了你自己,计算机是不知道它在做 FFT 的,这个信息在源码之后就被丢失了。scipy 库则可以利用“我现在正在做的是 FFT”这项信息给出最优的实现,前提是你通过“调库”的方式,把这个信息告诉计算机。
GPU 是对图形运算的 Specialization,GPGPU 则是对 SIMT 模型的 Specialization,RT core 是对光线追踪算法的 Specialization,现在手机厂商争相加入的 AI 芯片,则是对 AI 算法的 Specialization,苹果为新 Mac Pro 推出了 Afterburner 加速卡,貌似是用 FPGA 做的,可以看做是对 ProRes 格式的 Specialization。
当然,越是做 Chip Specialization,就越会发现 Chip Specialization 的能力是有极限的,这就是现在半导体所讲的 The Accelerator Wall ( https://parallel.princeton.edu/papers/wall-hpca19.pdf )——芯片厂商在把常见算法都用硬件实现一遍之后就又没事可做了,现在看上去大家都在搞 Chip Specialization,只是因为之前都在搞通用处理器,没有来得及充分利用 Chip Specialization 的潜力而已,等到这波“红利”吃完了,还是会回到通过爬制程工艺,堆核扩大芯片规模来提升性能和能耗比的老路。

Chip Specialization 不仅体现在 AI、挖矿、光追等“高大上”领域,不同位数的整数运算、乘除法运算、浮点运算同样也属于 Chip Specialization,只不过这些早就普及了。也正是因为这些东西普及率高,工业上的通用编程语言才会设计 Primitive Type,作用正是允许程序员将优化需要的信息 encode 在程序中,从而方便编译器或硬件的 Specialization (一般做成 Primitive Type 的,在整个系统栈中的某个或多个位置都会有 Specialization,比如上面提到某些处理器没有提供硬件乘法指令,这时编译器会调用一个优化过的库函数来做乘法)。
需要注意的是,Primitive Type 和底层 Specialization 的对应关系,并不能动摇 Primitive Type 本身更像个 hack 的性质。Primitive Type 实际在程序语言中形成了某种边界模糊的 DSL,而将 Specialization 抽象为 DSL 的做法在最近越来越 explicit,比如 CUDA 则是程序员为 NVIDIA GPGPU 这一 Specialization 提供计算信息的工具,同样的现象出现在 AI 领域。
所以 C 语言标准里会针对各种 Primitive Type 做出“至少 32 位”之类奇怪的限制,因为这些 Primitive Type 直接对应硬件或软件的 Specialization 或某个可以用来做 Specialization 的标准。

无限范围 /精度的整数和实数在理论上是不能使用有限空间存储的,并且实现会比固定范围更复杂,而大多数情况下,其带来的好处无法 justify 其成本。最后形成的妥协便是:使用固定位数、有限精度的整数和浮点数来进行大多数的计算。在编程语言中做 Primitive Type,在编译器和库中针对这些类型做优化,在硬件中针对这些类型的运算做 Specialization。
“任何人都不想得到不准确的结果吧”同样的话可以这么说“任何人都不想内存空间受限制吧”“任何人都不想网速有个最大值吧”“任何人都不想一次航班要好几个小时吧”“任何人都不想钱能花完吧”。

浮点数只是系统给你提供的一个选择,当固定位数的整数 /浮点数无法满足你的需求时,你可以选择使用其他手段,就像在编程语言中定义新的函数、类型一样。比如使用符号计算,把你的公式本身(而不是公式运算出的值)存储起来,计算机来做化简,什么数都可以表示。如果楼主够厉害,够有钱,可以使用 Chip Specialization 的方式把这套系统用硬件实现,并做成编程语言的 Primitive Type (或一套 DSL )。就不会有这种问题了。

真正的 bug 出在楼主的认识里。“浮点数”从定义上就是有理数的一个子集而不是实数,也不是有理数。各种 Primitive Integer Type 一般也对应的是整数的一个子集而不是整数。楼主将“浮点数”默认为“小数”或“实数”导致出现了这样的疑问。但是有没有想过,如果“浮点数”等于“实数”的话,为什么要叫“浮点数”这个奇怪的名字而不是“实数”呢。

当然有些编程语言不负责任地定义了一个名字叫 “real” 类型,却用浮点数实现。real 这个名字上包含所有实数,但是只能包含有理数的一个子集。同理有些语言有名叫“int”或“integer”的类型,但是只能包含整数的一个子集。这种挂羊头卖狗肉的行为已经超越了 bug 的范畴,我个人是支持批判的。但是如果名为 “float”“single”“double”,用浮点数实现,只能表示部分有理数,这是预期行为,不是 bug。
2020-01-10 21:42:41 +08:00
回复了 murmur 创建的主题 奇思妙想 [年终总结]为什么我要做果黑,以及果黑的自我修养
楼主漏了一个“macOS 是 UNIX 和 GUI 的最佳结合”
2020-01-10 21:25:14 +08:00
回复了 FaiChou 创建的主题 程序员 你们认为函数式编程语言未来可期吗?
几个 myth:
* 函数式编程需要"高智商"么?

我认为技术社区对函数式编程的陌生感是被建构出来的。或者说进入了”目前 imperative 占了主流,所以大家从一开始就接受的是 imperative 的话语体系,所以会对 functional 有陌生感“的循环。并且这个循环还存在”functional 的资料更少,生态更差“的负反馈。

函数式编程本身做的就是用非常简单的东西 compose 为更加复杂的东西,函数式编程的理论、大多数函数式语言和函数式程序走的都是这个路子,函数式编程本身并不比拼乐高难。

为什么说函数式编程是自然的,符合直觉的?为什么说函数式编程能够 Compose ?
举个例子:为什么要有 closure 和 first-class function 呢?
Closure 反映的是 Lexical Scoping,就是我在外面定义的一个东西,在里面一定能用(无论是一个 if 块里面,还是 for 块里面,还是函数里面)。这本来就是一个编程语言应该具有的属性。
first-class function 则是对编程语言中“值”的语义的自然推广——如果一个 int 可以来回传递,可以被存储,如果一个“对象”( OOP 意义上)可以来回传递,可以进行各种操作,那么为什么函数就不可以呢?
所以并不是“我要 FP,所以我要 closure 和 first-class function”,而是“我要一个正常的,不坑的语言,如果这个语言支持 lexical scoping 和 function,那么它就也应该支持 closure 和 first-class function”,closure 和 first-class function 根本就不是“语言特性”,而是正常的直觉和逻辑的结果。
只是因为很多语言有这两个限制,所以如果你用有此限制的语言入门,你就会先入为主的认为编程语言“就该”是这样的。有一天这个语言更新了,加了这两个“特性”,然后网上一堆 blog 就沸腾了——尽管这不过只是你应有的自由而已。

在 VFX 领域,软件市场大多被大厂商的专业软件所垄断,大多数用户也没什么编程能力。然而就是这么一个行业,最近几年刮起了一股”Node“的歪风邪气——不是 Node.js 的那个 Node,而是”节点“意义的 Node。
这是 Maya 中的 Node: http://i.imgur.com/vuthCQc.jpg
这是 Maya 新加的 Bifrost 特效系统: https://area.autodesk.com/dynamic_resources/area_blog_post_content/3129/html_content/11564262275.jpg
这是 C4D 中的 Node: http://www.llgmotiongraphics.com/wp-content/uploads/2012/09/Pin-Ball-Dynamics.jpg
C4D R20: https://www.maxon.net/fileadmin/_processed_/0/f/csm_nodes_preview_c2598d29d5.png
Softimage ICE: https://4.bp.blogspot.com/-bkZyxX3FmdY/UXdE4Mlii3I/AAAAAAAAoHY/EHFXSKgxsFk/s1600/Softimage+ICE+and+Maya+Fluids+collaboration.jpg
MODO: http://esteldan-3d-graphics.de/contents/Projects_Pics/Car_Rig_3.jpg
这是 Nuke 中的 Node: https://s3.amazonaws.com/pbblogassets/uploads/2013/02/Nuke-Nodes.png
这是 Substance 中的 Node: https://cdna.artstation.com/p/assets/images/images/009/213/162/large/lino-thomas-noodles.jpg
这是 MARI 中的 Node: https://learn.foundry.com/mari/Content/Resources/images/user_guide/node_graph_intro2_680x394.png
这是 Blender 中的 Node: https://pbs.twimg.com/media/ENFE9MyWsAAlAo6?format=jpg&name=large
这是 Clarisse 中的 Node: https://www.isotropix.com/var/img/cms/41/1463651663-lookdev-unified-shading-network-full.jpg
这是 Houdini 中的 Node: https://cpb-eu-w2.wpmucdn.com/coursework.lincoln.ac.uk/dist/7/135/files/2018/10/LTCAO_SS_11.jpg
最有趣的例子是 3ds Max,论技术力,3ds Max 的用户可能比上面的要偏低一点,自动麻将桌在 2011 版本加入了 Node-based Material Editor: https://cdnb.artstation.com/p/assets/images/images/016/919/059/large/paulo-lima-slatematerialeditor.jpg?1553972675,然后又在 2016 加入了 MCG: https://area.autodesk.com/blogs/the-3ds-max-blog/introducing-max-creation-graphs MCG 作者有 FP 背景,直接摊开了说这就是基于 .NET 的“Functional dataflow visual programming language”。
这年头软件不做个 node network,还真不好意思拿出去卖。
(就连 Unity 都在整什么 Shader Graph,Visual Effect Graph )
你可以去搜,VFX 工资并不比程序员高,一搜都是劝转 CS 的。然而这就是人家干活的东西。还是靠简单的东西 Composite 成复杂的东西,只有“表达式”和“节点”,没有“变量”。

最极端的例子是 Excel,在上面的”Monad 之父插手 Java“之后,还有个八卦是”Haskell 之父水过一篇关于 Excel 和 FP 的关系的 paper“( https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/excel.pdf?from=https%3A%2F%2Fresearch.microsoft.com%2F%7Esimonpj%2FPapers%2Fexcel%2Fexcel.pdf ),其中写到:Indeed, one of the great merits of spreadsheets is that users need not think of themselves as doing “programming”, let alone functional programming — rather, they simply “write formulae” or “build a model”.
MSFT 如果一开始就告诉 Excel 用户他们在”编程“,那估计没人会用 Excel——太多的神秘感都是被建构出来的。不过我倒是相信,如果告诉 Excel 用户他们在做”函数式编程“,可能要比本站的某些用户更好接受——毕竟”编程“这个东西一般大学才学,更别说什么”imperative“了,而”函数“初中就学了。

汉语,英语,德语,阿拉伯语,哪个更难?我作为汉语的 native speaker,在学到大量屈折的语言时,在看到阿拉伯文字时,感受和学习函数式语言是一样的。这也没碍着全世界人讲不同的语言。
(顺便,自然语言作为长期外行设计出来的东西,有很多不 composable 的地方。最简单的就是英语中的大量的不规则动词)
不过我觉得最要命的是,自然语言中每个语言会使用固定的语音集合,不同语言使用的语音集合是不一样的,而在长大之后我就感觉彻底失去了学习新的语音的能力 ...

* Java 一直统治世界,函数式编程就没有未来么?

虽然说完全的函数式编程暂且不太讨好,但是这个问题好像忽视了关于函数式编程的特性一直在不断地进入新的语言和旧有语言的新版本这一事实 ...

用 Bartosz Milewski 的话说:Surely you can’t help but notice that there’s been a steady stream of new functional features INVADING imperative languages. Even Java, the bastion of object oriented ...(注意用词 ...)

Guy Steele 更是直接说"We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp."

最后,就算一个语言里一点”函数式“特性都没有,什么 Global Variables are Evil, High cohesion Low coupling, Don't Repeat Yourself, Separation of Concerns 这些设计思想不也是通用的么?见得越多,你就会越重视 Composability 的作用,为了实现 Composability,你会自然地发现有时候有 Side Effect 不如没有,你会自然地认识到理论框架的重要性,这个过程并不需要给你强制灌输一些什么乱七八糟的“教义”。

---

我觉得这几个帖子应该引发的思考是:我们真的有过“在意”这件事情么?再看一遍:C 的成功是 UNIX 的成功,C++ 的成功则是建立在 C 的成功的基础上,PHP 和 JavaScript 的成功是 Web 的成功,Java 的成功是 Sun 和 C++ 的成功——它们都不是“语言本身“的成功。
什么是“语言本身”?考虑这样一个问题,当被问到“XX 语言为什么好?”时,你会怎样回答?
它的 IDE 支持好?它的库多?某个平台甚至某个行业钦定了用它?它的工作多(或者好招人)?它的语法“优雅”?或者单纯它的爹比较厉害?
这些都不是“语言本身”的东西。虽然这些东西会影响大家对其的评价(甚至决定你有没有听说过它)。
但是最有趣的事情是,这些东西不仅会影响对语言的评价,还会影响对“语言本身”的评价,能让人把坏的吹成好的,把好的贬成坏的,所谓 dssq。

说来不怕笑话,Haskell 有个(非官方的?) motto 叫“Avoid success at all costs”。这句话 ... 有点歧义,即“((Avoid success) (at all costs))” 和 “((Avoid) ((success) (at all costs))” 两种解释。但是共同的意思是,Haskell 社区早就看出了“Success”和“语言本身”没有什么关系,Haskell 这个“语言本身”不会向其他因素妥协,好的东西就是好的东西,Haskell 不会因为“Success”的需求而拒绝好的东西,也不会因为“Success”的需求而包容坏的东西。
如果有一天 Haskell 真的“Success”了,那么 Haskell 希望它给人的印象是安全、强大、一致、简洁与高效,而不是“xx 在用 Haskell 修福报”“大家都在用 Haskell”。
虽然说我并不认为 Haskell 真的做到了这一点,也并不认为 Haskell 真的能 “Success”。但是对我个人而言,在这一个网络被封锁和监视,数据被泄露与复制,一言一行一举一动都被记录的时代,能遇到这样一个不忘初心,牢记使命,“pure”的东西,是我的幸运(虽然它有点懒)。

类似的问题不只出现在编程语言领域。“Worse is Better”和“The Right Thing”光在计算机领域就对立了好几十年了。
编程语言天天讲什么 first-class,但是实际上“编程语言”这个东西在它的大多数用户心中什么都不是,连 second-class 都不算。
1 ... 59  60  61  62  63  64  65  66  67  68 ... 123  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5186 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 50ms · UTC 08:51 · PVG 16:51 · LAX 01:51 · JFK 04:51
Developed with CodeLauncher
♥ Do have faith in what you're doing.