duangsuse::Echo
https://zhuanlan.zhihu.com/self-discipline #recommended #PL
所謂「業餘」程序員應該理解爲「加入生產前的學院派程序員」
想想这本书已经是很久以前读的了。
它的内容已经想不起来了,但是行文特点还是记忆犹新。
还好这本书还没有中译版的,不然又成了中西文化杂交的产物了,不伦不类。
其实,读了不少原版书以后,就慢慢感觉到了一种套路。
中文书,偏重实用,讲述某个先进的工具如何使用。
原版书(American),偏重思考和总结。
这可能是对世界的态度不同所致,各有利弊。
择其善者而从之,其不善者而改之。
科学方法,是从国外传进来了,理解他们的思维习惯很有必要。
观察,假设,预测,检验,重复,科学和工作无不沿着这一套路进行。
本书简化了这个流程,全书采用问答=>定理的方式进行。
就像一本薄薄的Q&A手册似的。
本书在难度上属于入门级,并没有介绍scheme一些难以理解的特性。
比如continuation和macro。
所以,任何喜欢学习的人,无论基础怎样只要足够耐心都可以读完。
但这并不是说它是简单的,你一定知道易学和简单完全是两码事。
学会用递归解决问题,是学习scheme的第一步,也是学习函数式编程的第一步。
个人以为,这是一个把某个问题转换为更小规模问题的过程。
而其他语言中,人们倾向于直接思考问题的迭代解决思路。
其实,从更高的角度来说,递归像是在归约问题,迭代像是在从头开始。
所以,用递归提供解决思路,然后再转换为迭代实现,是很好的一种思考方法。
另外,介绍scheme语言特性的书真的很少,因为人们只是把scheme当做工具来使用。
更有一些人认为scheme没有语法。
怎么说呢,scheme相当于曲别针,虽然简单,但是内涵丰富,是智慧的结晶。
你不觉得曲别针是天才之作吗?
好吧,你还是学习“大型”语言吧。
有哪些计算机的事实,没有一定计算机知识的人不会相信? - Belleve的回答 - 知乎
https://www.zhihu.com/question/288115796/answer/471726222
https://www.zhihu.com/question/288115796/answer/471726222
在屏幕上写字比贴图复杂得多家长总是无端相信微信谣言怎么办? - 六百八十寺的回答 - 知乎
https://www.zhihu.com/question/31725601/answer/139596574
#China #life #Haha
https://www.zhihu.com/question/31725601/answer/139596574
#China #life #Haha
RapidJSON 代码剖析(二):使用 SSE4.2 优化字符串扫描 - Milo Yip的文章 - 知乎
https://zhuanlan.zhihu.com/p/20037058
https://zhuanlan.zhihu.com/p/20037058
Zhihu
RapidJSON 代码剖析(二):使用 SSE4.2 优化字符串扫描
现在的 CPU 都提供了单指令流多数据流(single instruction multiple data, SIMD)指令集。最常见的是用于大量的浮点数计算,但其实也可以用在文字处理方面。
程序员面试遇到过哪些奇葩的问题? - MrRoach的回答 - 知乎
https://www.zhihu.com/question/280042449/answer/430332267
https://www.zhihu.com/question/280042449/answer/430332267
数年前电话面试某A开头的互联网公司,题目是这样的:给出两个链表表示的大整数,高位存在前面,求用另一个链表表示两个整数的和。
我提出第一个方法,被否决,对方的原因是:你读了两遍链表,我们公司都是要处理Billion级别的数据的,你不能读两遍。
提出第二个方法,否决,原因是不能修改输入数据。第三个方法,否决,原因是不能开额外存储。
我实在没辙了,我都恨不得给他数学证明为啥不行了。忍着问了一句您能给个hint么实在是不会了。对面说,你能不能考虑一下递归?能不能考虑一下递归?
递归?。。。。。。递你妈归啊,我当时一怒直接怼回去了,不行。“为啥不行啊?”“你说的要处理billion级数据啊,你家栈能有billion级深度么?你不让开额外空间,栈空间就不是额外空间了?”对面沉默了十秒,说,你能不能假设就三五个数据啊?我就是想让你写个递归。。。。
作者:MrRoach
#Julia #PL #recommended
一个简单的Julia教程(一) - 罗秀哲的文章 - 知乎
https://zhuanlan.zhihu.com/p/41802723
https://zhuanlan.zhihu.com/p/41816890
簡單]的 Julia 程序設計語言入門
一个简单的Julia教程(一) - 罗秀哲的文章 - 知乎
https://zhuanlan.zhihu.com/p/41802723
https://zhuanlan.zhihu.com/p/41816890
簡單]的 Julia 程序設計語言入門
#PL #backend
在python程序中调用cpp的库创建的线程是否受制于GIL? - 依云的回答 - 知乎
https://www.zhihu.com/question/27245271/answer/462975593
在python程序中调用cpp的库创建的线程是否受制于GIL? - 依云的回答 - 知乎
https://www.zhihu.com/question/27245271/answer/462975593
因为python的多线程,其实不是真的多线程,它会通过GIL来控制线程,导致不管有多少个核,其实在同一时间只有一个线程在跑。错的。Python 的多线程是真的多线程,只不过在任意时刻,它们中只有一个线程能够取得 GIL 从而被允许执行 Python 代码。其它线程要么等着,要么干别的和 Python 无关的事情(比如等待系统 I/O,或者算点什么东西)。那如果是通过CPP扩展创建出来的线程,可以摆脱这个限制么?很简单,不访问 Python 的数据和方法,就和 GIL 没任何关系。如果需要访问 Python,还是需要先取得 GIL。我不明白很简单的道理,为什么你们就是不肯理解一下,非要各种传谣造谣呢?GIL 是为了保护 Python 数据不被并发访问破坏,所以当你不访问 Python 的数据的时候自然就可以释放(或者不取得)GIL。反过来,如果需要访问 Python 的数据,就一定要取得 GIL 再访问。PyObject 等不是线程安全的。多线程访问任何非线程安全的数据都需要先取得对应的锁。Python 所有的 PyObject 什么的都共享一个锁,它就叫 GIL。
作者:依云
https://zhuanlan.zhihu.com/p/38399566
#C++ #backend
#C++ #backend
我们发现test2对应的汇编代码和test1对应的汇编代码完全相同,这说明C++编译器在编译程序的时候将指针和引用编译成了完全一样的机器码。所以C++中的引用只是C++对指针操作的一个“语法糖”,在底层实现时C++编译器实现这两种操作的方法完全相同。