V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Origami404  ›  全部回复第 1 页 / 共 5 页
回复总数  84
1  2  3  4  5  
lisp in small pieces
2023-04-11 23:35:29 +08:00
回复了 soclearn 创建的主题 编程 传统编程语言语法发展到现在,有个阑尾炎事件依然存在
编程语言本来就是树状的,不用括号套括号表示树状结构还用啥? lisp s-exp 和 Mathematica 那种 m-exp 选一个呗
@vzyw 前排提醒一下楼主,你的第二段话可能会造成一些人的不适。

馒头是某个 pt 下载站的昵称,pt 可以大致理解为 “private bt”,是非公开的 p2p 下载方式。药是邀请的意思,因为 pt 下载非公开,想要加入需要有已经在内的人的邀请。

迅雷有 “吸血” 功能,只下载不上传,被认为是破坏 bt 环境的元凶之一。

另外个人觉得看不到的黑话忘记了便好,看不懂说明与自己没啥关系,不需要过于挂念。
2023-01-28 17:47:47 +08:00
回复了 codewld 创建的主题 Java 不懂就问, LinkedHashSet 为什么要这样设计?
说不定就是因为懒得再写一次代码呢,每个映射只需要多付出一个指针的大小就可以立得一个 set ,多快乐啊

有些语言支持零大小类型,这种语言的 xxSet<T> 可以直接是 xxMap<T ,Void> ,毫无额外开销。我记得 Rust 标准库里的似乎就是这样实现的,但是我不确定了。
2023-01-27 15:14:52 +08:00
回复了 57hillside 创建的主题 问与答 CS 本科生 - 迷茫,改行 有多普遍,哪些原因造成的?
@57hillside
学校是比较小的 985 ,cs 专业的或保本校,或考公,或就业基本上都能安排走。

课程的话我们学校大一编程基础和数学,大二数据结构和算法和计组,大三开始才是 os/编译器 /数据库等“硬课”。难度的话,只能说讲课是领域里的入门水平,考试又是课程的入门水平+死记硬背,能挂科的只有摆烂一点都不学的,只想过考前突击一周都可以。而且学校也不想挂科率高,所以课程难度上不会起到“劝退”作用,只有等到大三大四找实习找不到或者发现自己啥路也没有的时候才会有“劝退感”,然而已经迟大发了。

大学生聚集得多的感觉是知乎,但是我觉得你想找的应该是应届生而不是本科生,我身边统计学表明能知道“真正的编程”(工作 /大型开源项目)是怎么样的同学十中无一,很多同学不知道真实的项目开发是怎么样的,跟他们一起分工开发甚至是负效率…我做啥比赛什么的都只敢找熟人了。

以及稍微吐槽一下我校研一,写出来的代码跟刚学编程两年似的,还不止一个两个。而且不知道为什么老师们总是喜欢叫研一写实验框架 /基建,导致一些实验给的代码框架看着就令人血压爆炸…还不如一些厉害的大二同学做的
刷题的回馈性很强,相当于一个个消耗时间可控非常可控的“小项目”,在没有特别想做的 side project 的时候其实是维持代码手感好选择

(可惜我现在想做的 side project >> 我能做的,所以我还没刷过多少 leetcode:)
2023-01-27 10:22:21 +08:00
回复了 57hillside 创建的主题 问与答 CS 本科生 - 迷茫,改行 有多普遍,哪些原因造成的?
我们学校改行的感觉不多,最差劲的好像都能去比亚迪恰钱来着
2023-01-27 10:21:13 +08:00
回复了 57hillside 创建的主题 问与答 CS 本科生 - 迷茫,改行 有多普遍,哪些原因造成的?
身边统计学警告

很多人看着 cs 能赚钱来报的,结果本科四年连只够赚钱的本领都没学会,别说别的了…

据我所知除了中科大和南科等少数高校,转入 cs 专业都是相对困难的(不亚于高考考上该学校),但是 cs 转出到其他专业是比较简单的,所以我想不出对 cs 不感兴趣但是还留在 cs 的人除了 cs 能赚钱之外还关注什么
但是通读文档 /维基百科 /SO/长篇大论能给我更多该领域相关的知识,这些知识长久来看就是我发现新事物和进步的机会。哪怕是配置文件的组织里,你也可以看到设计者对于该问题解决方案的提炼(配置文件不就是一个能解决这个问题的程序的最少的输入吗)。我目前更看重我自己在解决问题中的提升和对问题的理解,而不是问题的解决本身。所以我仍然 prefer 目前的搜索+看博客 /文档等各种资料的方法来解决我现有的问题。
2022-12-01 02:44:32 +08:00
回复了 jancing 创建的主题 C++ 学了 C++去写什么有意思的应用呢?
可以试试基于 llvm 写编译器? llvm 本身就是 C++写的编译器后端,项目本身就是 C++11+的,并且用了基本上就可以自带 jit 跟后端,自己只要实现编译器前端就可以了。antlr/yacc/手写递归下降出一个 AST 然后再调 llvm 的 API ,做起来应该难度适中,可以自己挑自己在其他语言里喜欢的特性拼一下做自己的语言。
2022-09-29 15:20:46 +08:00
回复了 andyJado 创建的主题 程序员 非 CS, 想弄弄编译, 还啃龙书吗?
@andyJado AST 是程序结构的抽象表示,使用 ast 可以完全将语义部分(即遇到什么程序结构要干什么)跟解析部分(从词法流中解析出程序结构)分离开来。在早期不分的情况下,必须在解析部分就指定解析出的程序结构的语义,就会导致代码耦合。

其实换一种角度想,你可以将 AST 视作一种“所有语言都具有的语义”,因为它表达且只表达了程序结构,没有任何多余信息。

其实可以各种各样的 IR 就是各种各样的数据结构。我们使用数据结构的目的就是为了方便插入 /提取某些信息,方便一些算法的使用。使用某种 IR 的目的也是这样,不同种类的 IR 能方便地获取源程序中不同的信息,从而方便不同的优化算法使用。

当然了,IR 本身作为一个 AST 跟实际汇编语言后端之间的抽象层这个作用也是很重要的,它能极大方便多后端编译器的开发。
2022-09-29 15:11:27 +08:00
回复了 andyJado 创建的主题 程序员 非 CS, 想弄弄编译, 还啃龙书吗?
做多趟编译器的话感觉首先是要想好 ir 形式,是指令变量分离的三地址,还是类似 llvm 跟 graal 的图状 ir ,又或者是 lisp 系的 cps 。很多时候理解了 ir 跟源语言之后从 ast 到 ir 这一步就都迎刃而解了
2022-09-29 15:08:04 +08:00
回复了 andyJado 创建的主题 程序员 非 CS, 想弄弄编译, 还啃龙书吗?
当然要实现特定的大的特性,比如基于原型的 oop ,类似 Java 那样的 oop ,惰性运算,条件系统那种的话,还要再深入具体体系看看设计。
2022-09-29 15:05:47 +08:00
回复了 andyJado 创建的主题 程序员 非 CS, 想弄弄编译, 还啃龙书吗?
实践上我觉得最难的是从有变量的语言转到无变量的语言 /ir 的实现,这意味着将表述程序的重心从内存位置转移到值,需要做很多分析。
2022-09-29 15:01:56 +08:00
回复了 andyJado 创建的主题 程序员 非 CS, 想弄弄编译, 还啃龙书吗?
我的理解是编译即翻译,是数据结构跟特性的变化。

数据结构的变化的话主要有:文本->词法流,词法流->ast ,文本->ast ,ast->各种类型的 ir 。

特性的变化主要是有无变量,有无语句还是纯表达式,有无非局部控制流,有无闭包,有无宏,有无可直接访问的线性内存,有无模板之类的。

要学哪一步就要学特定的实现方法,比如词法流->ast 就有一堆 ll ,lr ,parser combinator 之类的。然后各个特性的翻译也是有要学的
2022-08-02 19:07:50 +08:00
回复了 LuckyPocketWatch 创建的主题 C++ C++中的数组寻址,是线性时间还是固定时间
@dcsuibian 而我认为对于楼主这种 N -> \inf 的情况而言,“基本操作”不应该就是“一次访存”,而应该是如我楼上所言的“根据一个位来排除”。因为不管怎么说将涉及一个无限长对象的操作定义为“基本操作”都是荒谬的。
2022-08-02 19:04:14 +08:00
回复了 LuckyPocketWatch 创建的主题 C++ C++中的数组寻址,是线性时间还是固定时间
@dcsuibian 大 O 计数法只有在规定了什么操作是 O ( 1 )的时候才有意义,它是计量“基本操作数”与输入规模的关系而不是运行时间与输入规模的关系。就您提出的例子而言,“64 位计算机花的时间是 32 位的两倍”是不正确的说法,正确的说法是“64 位计算机进行一次访存需要的“基础操作”数量是 32 位的 2 倍”,这里我把“基础操作”定义为“根据一个位来筛选掉一半内存单元格”。而执行时间自然是取决于这些基本操作需要跑多久和能不能并行跑的。
2022-07-24 18:34:35 +08:00
回复了 LuckyPocketWatch 创建的主题 C++ C++中的数组寻址,是线性时间还是固定时间
当 N 趋向无限大时,使用二进制编码索引的话,理论上应该是 O ( logN )的,因为最快的也就是二分去查找对应的单元格。

而平时认为的单次内存操作 O ( 1 )只不过是 **目前人类的计算机设计 /内存实现** 把对“由定长二进制地址找单元格”这个操作硬编码到硬件,从而对上层程序体现出来的特点罢了。外星人的电脑设计很可能就会直接底层支持任意长索引以至于它们的内存读写是 O ( logN )的。

所以要多学学纯函数式编程,万一外星人来侵略地球了还能给它们写写电脑病毒。(🐶,最近外星人入侵电影看多了)
2022-05-14 13:02:54 +08:00
回复了 Kawauso 创建的主题 Blogger 各位搭建的个人博客会统计访问数据吗?
不会,因为对我而言写博客就是输出,我并不在意有没有人或者谁看了
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3464 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 10:59 · PVG 18:59 · LAX 02:59 · JFK 05:59
Developed with CodeLauncher
♥ Do have faith in what you're doing.