<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
      <title>FFengJay</title>
      <link>https://fengjieli.top</link>
      <description>Last 10 notes on FFengJay</description>
      <generator>Quartz -- quartz.jzhao.xyz</generator>
      <item>
    <title>读博是为了什么</title>
    <link>https://fengjieli.top/ideas/whyphd</link>
    <guid>https://fengjieli.top/ideas/whyphd</guid>
    <description>&lt;p&gt;可能是基因所致，我的大脑总会尝试对long-term effort, low returns (长投入低回报)的事情发出&lt;strong&gt;意义是什么&lt;/strong&gt;的疑问🤔，读博 or 科研正好完美契合这一点。可能大部分人类都会有类似的问题，于是想着记录一下自己在不同时间，对不同方面思考的片段，希望对其他人有帮助。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;由于我的对一件事情的认知一定会与我思想的变化、遇到的事情、得到的反馈息息相关，所以这篇文章会采用间歇性更新的形式，每当我有不一样的感受时会回来新增内容，每段内容也会标注上时间戳。说不定就会出现FFengJay反对FFengJay的情况出现:)&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2026-10-24-博一入学后第一个月&quot;&gt;2026-10-24-博一入学后第一个月&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#2026-10-24-博一入学后第一个月&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;当我写时间戳的时候才意识到我入学才一个月:-(, 可能是因为一直在同组升学的原因，从本科毕业到硕士毕业到现在感觉没啥记忆节点。这次还好，入学就去了一趟🇩🇪&lt;a href=&quot;../reading/ASE26-德国之行&quot; class=&quot;internal alias&quot; data-slug=&quot;reading/ASE26-德国之行&quot;&gt;ASE26-德国之行&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Ok, 回到正题。这次想写的topic是&lt;strong&gt;科研需“高效”吗&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;提出这个topic的背景是，近期AI-coding/AI-math的风吹得很大，而且每次看到社交媒体上OA两家的researcher都在说“AGI即将到来，到时候人类博士生将毫无作用”之类的论点（我不知道他们说这些是为了增强市场信心还是真的看到了AGI，但这与我也没关系，我思考的更多还是我能认识、接触到的事物）。&lt;/p&gt;
&lt;p&gt;思考这个问题的契机是我今天读到的一篇博客&lt;a href=&quot;https://people.csail.mit.edu/billf/publications/How_To_Do_Research.pdf&quot; class=&quot;external&quot;&gt;How to do research&lt;svg aria-hidden=&quot;true&quot; class=&quot;external-icon&quot; style=&quot;max-width:0.8em;max-height:0.8em&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;path d=&quot;M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;。里面的第一条advice是“Slow down to speed up”, 经典的汽车保险杠标语🪧。&lt;/p&gt;
&lt;p&gt;虽然这篇博客写在13年前，但却和我心里某些潜意识的想法似乎有了碰撞，让我想写下这段思考。在新idea上工作的最近一个多月，由于Coding Agent在编程领域的”摧枯拉朽”之势，我的科研日常中也加入了大量的AI参与环节，尝试了从&lt;code&gt;想idea-&gt;原型开发-&gt;系统实现-&gt;做实验-&gt;分析结果&lt;/code&gt;的全流程。&lt;/p&gt;
&lt;p&gt;回顾这段和Agent高度耦合的科研时间，我的科研流程其实更&lt;strong&gt;倾向于一种“效果/方法导向”（思考什么样的内容是novel的），而非我之前比较擅长的“问题导向”&lt;/strong&gt;（什么样的问题是存在并需要解决的）。&lt;/p&gt;
&lt;p&gt;具体来说，在这段时间里面，我一直在尝试搭出一个看起来很fancy的agent framework。Vibe coding给了我很大的便利，框架的核心代码基本上几天就出来了，换之前手工写的话时间可能至少x2/x3。其中主体逻辑在agent每次merge进去前我都是逐行audit并理解了的。一切似乎都进展得很顺利，除了我心里一直觉得自己在当前课题上没有一个真正能说服自己的解题思路。我并不把这个问题归结于AI的介入，毕竟最后还是自己handle一切。本质还是自己对AI使用方法和科研进展的评价出现了问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;之前，由于实现的成本过高，我不会一开始就想让代码实现完备，方法的思路和方法实现是阶梯式发展的：有了初始思路，搭出原型，发现一些问题，有一些新想法，修改原型…反复迭代，直到idea和原型都成熟。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;现在，由于coding的成本很低，AI可以根据我的指令快速地生成一个貌似完备的项目，但其中的一些细节可能和我的预期违背（即使用了很多skill和最好的模型还是存在这个问题）。这个貌似“完美”的AI slop会让我认为效果不佳是因为细节的mismatch, 我会&lt;strong&gt;在idea早期把“实现越来越符合设想”当作科研进展，却没有花时间去思考这个idea是否真的能够解决问题&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;高效Coding Agent的介入反而减弱了我对问题的思考深度，让我每周的科研进展变成了对AI“许愿”的结果。关键许愿得到的&lt;strong&gt;内容还总是看着很fancy，会让我即使内心觉得当前存在一些问题，但这周工作量似乎也还可以的错觉&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这就和我之前在本科/硕士阶段的科研经历形成了鲜明的对比。那时候由于实现成本高，我会在idea上花费大量时间去思考，尝试不同的思路，直到有一个比较成熟的想法才会去实现。这个过程虽然慢，但每次迭代都让我对问题有更深的理解，也让我对自己的研究方向有更清晰的认识。&lt;/p&gt;
&lt;p&gt;这个对比正好和blog中的“Slow down to speed up”是契合的，在之前，一些显化的指标（比如coding lines）往往是和一些深度指标（比如思考深度）是高度相关的，我们可以把显化指标当做工作量证明。但在AI突飞猛进的今天，我们的工作量证明也需要改变，&lt;strong&gt;如果我们一直关注着一些显化的指标，比如coding lines, 发表文章的数量、速度，我们往往会丢掉一些科研的本质：我们是否理解了问题并找到了一个优雅解&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当然，AI支持者中的“激进派”会认为，当AI智能发展到一定程度，&lt;strong&gt;人本身就是没有意义的，AI的思考不需要人理解，人也不需要理解&lt;/strong&gt;（比如最近AI解决了很多数学问题）。似乎AI的迅速迭代会把人的进步在客观上碾碎。&lt;/p&gt;
&lt;p&gt;这似乎又上升到了人生观的角度，&lt;strong&gt;当你知道你做的一切似乎在不远的未来（有生之年）注定是徒劳的时候，你要不要停止？&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;让我回答的话，我会用我读博的初衷来回答。我只是想用几年的时间自由地探索一些感兴趣的领域、增长自己的见识、体验思考人生、甚至不毕业quit掉也是在我的接受范围内的。“What I cannot build. I do not understand.”，AI碾碎我，与我何干？&lt;/p&gt;
&lt;p&gt;所以回到最开始的问题，科研是否需要高效？&lt;/p&gt;
&lt;p&gt;我的答案仍然是&lt;strong&gt;需要&lt;/strong&gt;。但我想追求的高效，是更快地弄清楚哪些假设成立、实验结果意味着什么，以及下一步值得验证什么。代码和论文都是重要的产出，我也需要持续追问：&lt;strong&gt;这些产出究竟让我多理解了什么？即使最终发现一个方法行不通，只要我能说清楚它为什么行不通，这段时间也产生了实际的科研进展&lt;/strong&gt;。&lt;/p&gt;</description>
    <pubDate>Sat, 24 Oct 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>ASE26-德国之行</title>
    <link>https://fengjieli.top/reading/ASE26-%E5%BE%B7%E5%9B%BD%E4%B9%8B%E8%A1%8C</link>
    <guid>https://fengjieli.top/reading/ASE26-%E5%BE%B7%E5%9B%BD%E4%B9%8B%E8%A1%8C</guid>
    <description>&lt;p&gt;我非常喜欢欧洲中北部，清冷的空气、茂密的绿植、悠闲的生活，都是我的心头好。&lt;/p&gt;
&lt;p&gt;非常开心能在Phd生涯开始时就有机会参加国际会议（many thanks to co-author Jiachen &amp;#x26; my sponser Prof.Jiang）。&lt;/p&gt;
&lt;h2 id=&quot;about-签证&quot;&gt;About 签证&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#about-签证&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;德国和很多申根国家一样，都需要VFS代理办签证。基本上按照小红书的攻略准备好材料+去卡到爆的VFS网站预约slot（推荐11点之前的slot，除非你想开VIP or 等待3小时+），到现场基本2小时内办结。德国大使馆的速度很快，一周左右签证就下来了。&lt;/p&gt;
&lt;h2 id=&quot;about-参会&quot;&gt;About 参会&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#about-参会&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这次参会我一共做了两个报告，一个是Jiajun师弟的投稿到APR workshop的工作，另一个是Jiachen和我投到TOSEM的工作，来ASE做Journal First talk。&lt;/p&gt;
&lt;p&gt;APR workshop的组织形式我很喜欢，整个会场是一个类似panel的形式，大家先自我介绍，然后在台上做报告的时候可以随时打断、提问、互动。可以更好地了解同行、工作背后的一些思路和想法。汇报这个工作的时候比较紧张，好像汇报时一直在看电脑屏幕，和听众交流比较少。&lt;/p&gt;
&lt;p&gt;TOSEM的Journal First talk是一个比较正式的会议形式，和普通的会议差不多，报告时间总计15分钟。这次报告我更加松弛，opening cue了一下上一个报告的Jun Liu (我们在华为是同一个team)，然后期间基本上都在和观众眼神交流，也很显著，很多人都对我们的工作感兴趣，提问也比较多。我也一一顺利回答了。&lt;/p&gt;
&lt;h2 id=&quot;about-记录感触&quot;&gt;About 记录&amp;#x26;感触&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#about-记录感触&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;至今出去开过会的国家都是发达国家：挪威、新西兰、德国。其实每次出去心里最大的感触是来自对当地人的生活状态的观察，并不是相册/朋友圈里的建筑、风景之类的（其实要比基建的话，外国和东大没办法比，历史建筑也是。慕尼黑给我的感觉和特隆赫姆一样，湿冷、风多、天天修路，其实和天津差不多）。&lt;/p&gt;
&lt;p&gt;整个城市给我的感觉就是松弛，即使它是德国的工业重镇，在这里我也能感觉到遇到的人都，怎么说，似乎很享受生活，至少相对于我来说。&lt;/p&gt;
&lt;p&gt;很巧，我们到的那天正好举办慕尼黑马拉松:&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/IMG_3759.jpeg&quot; width=&quot;30%&quot;&gt;
&lt;figcaption&gt;正在进行慕尼黑马拉松&lt;/figcaption&gt;
&lt;/div&gt;
整个城市的人似乎都在参赛或在路边为跑者加油，可能是因为社区活动或者学校人数比较少？感觉大多数跑者都会有认识的人在路边等他们，非常激动地为他们加油。我们是上午十一点左右到达的，而马拉松似乎会持续到下午三四点，这期间很多城市主干道路都会为此封路/半封路。这是我在慕尼黑第一次感到他们生活的松弛。
&lt;p&gt;后面几天，我渐渐确定慕尼黑是一个热爱自行车和跑步的城市，在市区漫步，随处可以看到电助力自行车和跑步的人（即使是刚过午饭的时间）。很多白发的老奶奶也都🚴‍♂️得飞快。&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/IMG_4178.jpeg&quot; width=&quot;30%&quot;&gt;
&lt;figcaption&gt;一辆很好看的自行车&lt;/figcaption&gt;
&lt;/div&gt;
&lt;p&gt;路上遇见不认识的人，稍微对视一下对方也会直接跟你’say Hallo!’打招呼。过马路时司机也会礼让行人，比在国内的体验好很多。遇到美丽的落日，大家也会坐在桥梁上欣赏，生活似乎很静，没有什么急着要去做的事情。&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/IMG_3934.jpeg&quot; width=&quot;30%&quot;&gt; &lt;figcaption&gt;晚宴路上遇到的落日，很多人坐在桥上欣赏&lt;/figcaption&gt; &lt;/div&gt;
&lt;p&gt;慕尼黑知名的除了工业还有🍺，人们晚上似乎都会来一杯，我在返程的飞机上遇到的德国人也要喝🍺。我们平常晚饭和会议晚宴时都品鉴了一番（7天似乎只有一天没喝🍺），味道确实比国内的好很多（虽然我在国内就喝过没几次，但尝起来确实好喝）。在吃饭时遇到的人也很nice，第一天的时候因为给了一个waitress不到10€的小费，她邀请我们喝了她私藏的shot，并且也会一些中文词来帮助我们点菜、拍照。&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/21859c70d6d68ad515a24b6ab45ccfa8.jpeg&quot; width=&quot;50%&quot;&gt; &lt;figcaption&gt;和Zhao Tian师兄一人一杯（摆拍bushi&lt;/figcaption&gt; &lt;/div&gt;
&lt;p&gt;在晚宴时有一位waiter老爷爷特别好玩，如果你举手比较明显地催他，他会故意装作木偶人一样走过来给你点东西。而且他会在你点饮料时故意皱眉，点🍺时才露出笑容。非常好笑的一件事，当我们喝完了上图那个大杯的🍺后，Shuochuan师兄和老爷爷有了眼神交流，老爷爷直接又端来一杯🍺，Shuochuan哥无奈接下新的一杯hhh。&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/2bae51dcdcb34d163a604c6f957757e7.jpeg&quot; width=&quot;50%&quot;&gt; &lt;figcaption&gt;五人小分队&lt;/figcaption&gt; &lt;/div&gt;
&lt;p&gt;当地也有很多美食，德国特色的猪肘、肉排、香肠、面包、碱水结、奶酪等等等，这一周吃了个遍。也尝试了很多其他地方菜色，kebab、印度菜、阿富汗菜等等。味道都很好🤤。&lt;/p&gt;
&lt;p&gt;其实每次旅行，尤其是出国旅行，都会让我对自己的人生产生一些思考。一直待在国内比较高压的环境，我总是陷入对局部最优的追求，甚至有时候会忘记一些在人生尺度上更重要的事情。而站在不同文化环境中，我能够清晰地看到自己生活中缺失的东西（就比如我之前说的&lt;a href=&quot;../ideas/抽离&quot; class=&quot;internal alias&quot; data-slug=&quot;ideas/抽离&quot;&gt;抽离&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;再次感觉，读博其实并不是为了发几篇论文的KPI，提升自己的发paper能力。而是在这几年里去见识不同的世界、认识不同的人、踏实地完成某一个小领域的难题，锻炼找到问题、解决问题的能力。似乎在这个过程中，我对人生的理解也会渐渐加深，我不认为拿到博士学位是什么了不起的事情（虽然对绝大多数人，包括我来说，都不容易），而是我在这个过程中，似乎会和去企业工作的人相比，能更加自由、任性、较真地认识并理解世界和人生，我越来越确信这一点。&lt;/p&gt;</description>
    <pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>TSE#1-论文后日谈</title>
    <link>https://fengjieli.top/research/TSE1</link>
    <guid>https://fengjieli.top/research/TSE1</guid>
    <description>&lt;p&gt;这是我博士期间被接受的第一篇论文，也是我探索漏洞相关领域的第一篇论文: &lt;a href=&quot;https://arxiv.org/abs/2601.19239&quot; class=&quot;external&quot;&gt;LLM-based Vulnerability Detection at Project Scale: An Empirical Study&lt;svg aria-hidden=&quot;true&quot; class=&quot;external-icon&quot; style=&quot;max-width:0.8em;max-height:0.8em&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;path d=&quot;M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt; (cite me, pls).&lt;/p&gt;
&lt;p&gt;先说明一下投稿时间线吧，给大家一个投稿参考:&lt;/p&gt;
&lt;figure data-rehype-pretty-code-figure=&quot;&quot;&gt;&lt;pre tabindex=&quot;0&quot; data-language=&quot;md&quot; data-theme=&quot;github-light github-dark&quot;&gt;&lt;code data-hide-line-numbers=&quot;&quot; data-language=&quot;md&quot; data-theme=&quot;github-light github-dark&quot; style=&quot;display: grid;&quot;&gt;&lt;span data-line=&quot;&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;1st submission: 2026-01-14&lt;/span&gt;&lt;/span&gt;
&lt;span data-line=&quot;&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;Decision: revise &amp;#x26; resubmit: 2026-03-26&lt;/span&gt;&lt;/span&gt;
&lt;span data-line=&quot;&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;2nd submission: 2026-07-15&lt;/span&gt;&lt;/span&gt;
&lt;span data-line=&quot;&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;Decision: minor revision: 2026-09-15&lt;/span&gt;&lt;/span&gt;
&lt;span data-line=&quot;&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;3rd submission: 2026-09-24&lt;/span&gt;&lt;/span&gt;
&lt;span data-line=&quot;&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;Decision: accept: 2026-10-01&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;论文的投稿流程花了9个月，体验下来感觉TSE的审稿非常及时，我的几次提交都在2个月左右就返稿了。&lt;/p&gt;
&lt;p&gt;其中第一次返回的意见是revise &amp;#x26; resubmit (很奇怪，TSE在ScholarOne上显示的是revise &amp;#x26; resubmit, 但在新的IEEE Author Portal上显示的却是reject &amp;#x26; resubmit), 总之读了一下审稿意见感觉比较soft，等价于一个“大大修 (major major)”。&lt;/p&gt;
&lt;p&gt;审稿人一共给了&lt;strong&gt;27条意见&lt;/strong&gt;，虽然意见繁多，但我认为其中的内容十分中肯，基本也都是当时做实验没考虑到或搁置的点。中间加上写硕士学位论文，一共改了大概3个月的时间。后续的提交和修改主要是一些实验细节的补充和论文语言排版的修改。&lt;/p&gt;
&lt;p&gt;体感上期刊的审稿意见比会议的意见对我来说更有帮助（可能是maybe吧），确实在这次投稿里学习到了很多东西。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;下面说一些论文背后的故事，不爱看的可以划走了（&lt;/p&gt;
&lt;h3 id=&quot;论文的开始&quot;&gt;论文的开始&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#论文的开始&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我在25年7月左右回到天大并对之前的工作完成了收尾，开始着手想新的idea。由于上一个工作是和Jiachen合作的关于漏洞静态检测的工作 （&lt;a href=&quot;https://dl.acm.org/doi/10.1145/3820049&quot; class=&quot;external&quot;&gt;Intent-Aware Defect Pattern Extraction from Singular Examples&lt;svg aria-hidden=&quot;true&quot; class=&quot;external-icon&quot; style=&quot;max-width:0.8em;max-height:0.8em&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;path d=&quot;M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;），并在菊厂里做了一段时间的实习，我发现漏洞相关的检测和修复其实是一个比较有趣且业界较为重视的方向。于是就想着去找点LLM相关的漏洞检测论文来看看，顺便也能了解一下LLM在漏洞检测领域的研究现状。&lt;/p&gt;
&lt;p&gt;当时的主流方法是把传统的静态检测技术（例如控制流/数据流算法 or 成熟的SAST工具）和 LLM进行结合来检测特定类型的漏洞。例如直接拿LLM做多Agent来替代SAST中的各个组件，或者利用LLM对SAST的checker/rule进行修改或增强。虽然论文数据看起来很fancy，但根据之前项目的经验来看，这些方法应该是仍然保留一些传统SAST的弊端（误报率、漏报率高，复杂漏洞局限性）和LLM的局限性（不时存在的幻觉）。但直接拍脑袋想一个有效的approach解决这些问题又感觉很难，所以Prof. Jiang建议我先找一些具有代表性的数据，横向评测一下这些方法，根据真实数据上的局限性再针对性地寻找可能的solution。&lt;/p&gt;
&lt;h3 id=&quot;计划赶不上变化&quot;&gt;计划赶不上变化&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#计划赶不上变化&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;既然大方向已经确定是一个对已有方法的study，那就按部就班地开始找数据集、配置方法、跑实验、分析结果。由于上一个工作里跑了很多传统SAST的实验，这部分没什么问题。主要耗时也是存在学术界Artifact质量参差不齐上，这是一个很常见的现象，论文往往针对一个比较具体的问题，因此代码实现必然只会在特定仓库/代码库/编程语言版本下进行测试验证。但做study主要就是在更大范围的数据上进行验证，许多不兼容/效率问题/适配问题就会出现。主要耗时也都是在这部分。非常感谢这些论文的作者，我在这期间多次给他们提issue和pr，询问和修复一些问题，都被及时地回复和处理了…&lt;/p&gt;
&lt;p&gt;当我跑完实验开始分析数据、写论文的时候基本上就11月了吧。在这期间，OA两家正好快速迭代出来了Codex和Claude Code。并且这些闭源/半闭源Agent在代码理解和漏洞检测任务上的能力直接刷榜了各个benchmark。但我当时的实验也基本做完了，就想着先不管，论文写完抓紧投出去。分析数据和写论文花了我不少时间，中间也作为co-author帮着赶了几个ddl，这篇论文的主体基本上是我写完的，也是第一次从0到1自己写完一篇长文的manuscript，Prof. Jiang在我写作过程中指出了很多写得不清楚和表达不恰当的地方（many thanks）。但当时投稿的时候内心就觉得这篇论文其实少了一些sota的方法，导致看起来不是那么appealing。&lt;/p&gt;
&lt;p&gt;毫无疑问，可能是大家在LLM时代都遇到的常见现象，第一轮的revise &amp;#x26; resubmit意见中大家比较集中的问题都在使用的LLM不够新（实验过程中gpt-5系列推出了）和缺少一些agent-based的方法。充分显示了怕什么来什么，永远别拿A类论文的底线要求自己（。这期间的三个月里面，一边写硕士学位论文和一堆毕业的杂事，一边拿新模型和codex/cc跑实验，基本上把原本的实验量x2了。另外也加入了很多对agent-based方法的独特分析。至少这版改完，我自己对这篇文章是比较满意的，感觉有了很多有趣的发现。&lt;/p&gt;
&lt;p&gt;这次交上去后，收到的审稿意见很友好。说实话，在漏洞领域，其实我还是一个小白，很感谢这些审稿人提出了一些建设性的意见，是为了让我的论文变得更好。相比之前有些conference投稿收到的纯粹diss的意见来说，这样的意见我认为是让学者之间的交流更有价值的，我在后续接到一些审稿邀请时也尽量从这种角度出发去给意见。&lt;/p&gt;
&lt;h3 id=&quot;accept后的思考&quot;&gt;Accept后的思考&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#accept后的思考&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;论文accept之后其实本来是一个值得开心的事情，但最近的心情却有些复杂。可能是最近AI的风口太大了，焦虑的情绪也在我的内心慢慢酝酿。日常接触的信息源和科研人员，大多离不开AI和效率两个topic。今天AI解决了xxx难题，明天xxx使用AI完成了一个xxx任务…&lt;/p&gt;
&lt;p&gt;体感来说，AI在一些重复度较高、反馈信息明确的工作上的效果确实很好，但其实在日常使用的时候也会有很多问题。但由于AI框架的上限很高，加上各种各样对AI或对使用者的宣传，导致我在想一些idea和实现代码的时候首先想的就是general agents的效果是怎么样？我的方法和general agents的区别在哪里？这当然是应该想的，论文也应该去解决真实的无法被解决的问题，但AI进步之快和学术论文的成型速度相比，确实让人焦虑。可能你的方法在你写完论文的那一刻就已经过时了，或者在你实验的过程中就已经被新的方法超越了… 这常常让我无法像之前那样深刻地去思考一些问题。&lt;/p&gt;
&lt;p&gt;如何解决呢？可能只有in-depth去分析一些数据和问题，做一些有趣和有深度的研究。回想起来，这也是我读博的初衷，只不过最近脑子中的胡思乱想比较多，导致我在做一些事情的时候总是会想“这件事的意义是什么？”，而不是“这件事能让我学到什么？”。&lt;/p&gt;
&lt;p&gt;带着功利性的目标做一些事情对我来说往往是很痛苦的，所以我想我还是把目标放在自己身上吧，一天只要自己有提升，就是perfect days…&lt;/p&gt;
&lt;p&gt;感觉没事多去外面转转骑骑车，和“正常人”（非科研人员）聊聊天还是挺重要的，世界没我也不会停转，几十亿人每个人似乎都有自己要忙的事情，有时候脑子想太多就把自己的生活想得太复杂了，其实看到的每一寸色彩、呼吸的每一口空气、听到的每一声鸟鸣都是一个个小小的奇迹。And I’m feeling good…&lt;/p&gt;</description>
    <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>个人价值</title>
    <link>https://fengjieli.top/ideas/%E4%B8%AA%E4%BA%BA%E4%BB%B7%E5%80%BC%E4%B8%8E%E9%94%9A%E5%AE%9A</link>
    <guid>https://fengjieli.top/ideas/%E4%B8%AA%E4%BA%BA%E4%BB%B7%E5%80%BC%E4%B8%8E%E9%94%9A%E5%AE%9A</guid>
    <description>&lt;p&gt;新年第一天，记录一下最近思考到的议题，并借此解决未来可能存在的焦虑与烦恼。&lt;/p&gt;
&lt;p&gt;可能在随意的一天，一个随意的时刻，一个令人心脏漏掉一拍的问题就会在脑中浮现，“走到现在，过往的人生究是否增加了我的价值”。&lt;/p&gt;
&lt;p&gt;这个问题令人心惊，存在两个原因：一是我们永远无法得到其真正的答案；二是这个问题抹杀掉了个人所有主观的价值，单纯以异化的客观价值来衡量人生。而处在这样一个物欲激增、信息爆炸、人人可以品头论足的时代，这个的问题是大多数人无法避免的。希望我的思考能够给你一些有用启发或单纯把这篇文章当作一个典型的反例。&lt;/p&gt;
&lt;p&gt;首先简单说明一下这两个原因：&lt;/p&gt;
&lt;h3 id=&quot;原因1&quot;&gt;原因1：&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#原因1&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;当脑中出现这个问题的时候，已经说明自己对目前所做的事情或所处的状态产生了怀疑，对于自我的价值产生了怀疑，需要找到一个客观的评价。&lt;/p&gt;
&lt;p&gt;客观的评价可以来自部分主观的评价，很直观的解决方法就是去让他人对自己进行评估。但人类思维的封闭性（单指思维不共享。Hello, Carol! It’s us!）导致我们并不知道对方的主观评价的客观程度有几分。客观的评价也可以来自公认的价值锚定物（比如钞票），稍微复杂一点的方法就是去找一种方式得到该锚定物（找一个工作）。他人评价与货币锚定能缓解焦虑，但它们解决的是“我值多少钱”，不是“我是谁”。所以问题只会被延期，而不是被消化，会在某时某刻再次击中你的大脑。而且后者有一个本质的问题: 而且后者还有个本质问题：你只是借助锚定物确认“它”有价值，却依旧无法确认“你”的价值。&lt;/p&gt;
&lt;h3 id=&quot;原因2&quot;&gt;原因2：&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#原因2&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果从当前社会主流的价值观来看，我们的价值包括工具性价值和关系性价值。前者包括经济价值、社会功能、自我牺牲，后者包括对他人的情感、文化影响。&lt;/p&gt;
&lt;p&gt;从前者看，如果目标就是创造财富，那么很有可能一个冷门专业毕业的博士的价值和一个从小就开始进行体力工作的人相比差不多（二者差距较大，并无孰优孰劣之分，甚至本文的写作出发点就是想消解歧视）。从后者看，如果目标是为影响身边的人，那么那些默默无闻、折磨自己和身边人的科研工作反而适得其反。&lt;/p&gt;
&lt;p&gt;这种外部价值的衡量往往会让人丢失掉我们对内在价值的认知，而当我们问出前面那个问题的时候，我们其实已经开始怀疑我们内在价值的存在。&lt;/p&gt;
&lt;p&gt;从这两个原因看，这个问题本质上似乎无解，我们似乎沦陷进了一个无间地狱：他真正危险的地方就在于我们会想起他，会试图回答他。&lt;/p&gt;
&lt;p&gt;所以我个人的解决方法就是：&lt;strong&gt;不要回答&lt;/strong&gt;（Listen! 叶文洁！）。当你开始准备审判自己的时候，不如选择接受自己目前的状态，继续向着自己真正想要的目标前进。&lt;/p&gt;
&lt;p&gt;对我个人而言，每当我处在一个痛苦的阶段（往往是在痛苦/迷茫地追求一个并不那么欣赏的目标时，比如本科保研的那段时间和之前写论文的时候），这个问题就会在我独处时袭来。似乎总是那些我主观上想要逃避，但客观上却不得不做的任务。经过几年科研经历的洗礼，我目前的人生哲学就是：&lt;strong&gt;面对&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这种面对并不是说那种歌颂苦难、称赞苦难、相信苦难终将成就伟大的无脑鸡血文学。而是说遇到人生各种问题与意外时，承认它们的存在，理解并接受他们出现的原因，并着手去根据现状尽可能地向自己的目标方向前进。说到这里就不得不提尼采被过度引用的超人哲学：“成为你自己”（Become who you are）。&lt;/p&gt;
&lt;p&gt;我们所拥有的，所能改变的就是我们自己，我们的行为、我们的思想、我们的意志。当我们做到我们能做的之后，我们就应该接受。Fuck the rest!&lt;/p&gt;
&lt;p&gt;这也正是我觉得虚无主义很有趣的一个地方，他虽名为虚无，但却并非单纯的躺平等待，而是在承认人生无意义的前提下，去完成自己的这段经历。&lt;/p&gt;
&lt;p&gt;所以，不管是哪天你也想到了这个问题，或者有人评论你的所做所为没有价值，当你开始怀疑自己前，记得说一句：&lt;strong&gt;Fuck you all!&lt;/strong&gt;&lt;/p&gt;</description>
    <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>抽离</title>
    <link>https://fengjieli.top/ideas/%E6%8A%BD%E7%A6%BB</link>
    <guid>https://fengjieli.top/ideas/%E6%8A%BD%E7%A6%BB</guid>
    <description>&lt;p&gt;人在闲的时候，往往是闲不下来的。比如我，写论文时无聊，脑中就开始胡思乱想，以至写下如此一篇闲文。&lt;/p&gt;
&lt;p&gt;不止一次，当我在工作日因琐事走出工位接触真正的社会（与大学校园截然不同）时，我总会时不时想，“工作日街上为什么会有这么多人，商场怎么会有这么多人，景区怎么会有这么多人…”，然后进一步观察走过的每一个路人，每一辆车，无由地联想到他是本地人吗？他是为什么会在这个时间出来? 他要去干什么?… 因为这些想法，走路对我来说也总带着一些乐趣。&lt;/p&gt;
&lt;p&gt;但当今天起床刷牙，看到校外马路七点就车水马龙（我住的宿舍在校区建筑群的边缘），心中突然生出一种别样的感觉。思考片刻，便想把这种感觉叫做&lt;strong&gt;抽离&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;首先大抵形容一下这种感觉，就像是楚门突然看到了一个和自己过往习惯截然不同的世界一样，我首先意识到自己的生活和这些人有着明显的不同，而更让我内心异样的是想到我之前一直沉浸在自己的日常，竟没有想过一天24小时还可以用另一种方式度过。这种异样带来的不适让我不得不去思考其产生的原因。思来想去，应该是过去一个月总是过着同质化严重的生活的原因:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;给不熟悉的人说明一下，在计算机科学的软件工程领域，一篇投稿到顶级会议/期刊的文章在投稿后往往需要至少3个同行评议，单独给出意见，作者对这些意见逐一回复后，这三个同行后根据论文和回复对论文质量进行讨论，在多数(≥2)人认为质量达标后才可能会被接受。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在11月下旬，我手头的科研工作就已经进入收尾阶段，整理数据，撰写论文初稿。这个过程对我来说是煎熬的：想象一下，你已经从这篇工作中得到了想要的结论并得到了一些亟待探索的想法，但是为了尽可能成功通过未来博士毕业答辩与企业招聘的分类器，你必须将其整理成一篇格式严谨，行文清晰的论文投稿到CCF-A类会议/期刊。单单这些倒也无妨（整理内容也可以带着自己回顾思考这篇工作的内容和结论），但为了能够成功满足random到的三个reviewer的可能存在的奇奇怪怪的品味，不得不在每一处进行防御性写作（不然很可能review comments就变成了大型抬杠现场）。后面这块工作无疑是让人感到痛苦、不会带来认知增长的（需要投论文&lt;span&gt;→&lt;/span&gt;防御性写作&lt;span&gt;→&lt;/span&gt;希望reviewer手下留情&lt;span&gt;→&lt;/span&gt;reviewer的存在又是因为我有投论文的需求）。&lt;/p&gt;
&lt;p&gt;我就是科研界的西西佛斯，论文就是那块石头。在推石头的西西佛斯也会有抽离感吗？&lt;/p&gt;
&lt;p&gt;我想应该是会有的，但西西佛斯没有选择。&lt;/p&gt;
&lt;p&gt;抽离感之所以让人不适，是因为他让自由的人意识到自己“推石头”般生活的机械与无“意义”（关于意义定义的争论本文不予讨论，此处我想说明的意义是一种时刻挑战自己的动力与面对现实的勇气，在西西佛斯身上，二者皆有，但将西西佛斯般的生活放在广义的，有选择的社会人身上，二者皆无），而这种单调与机械化又让人觉得自己仿佛变成了一个机器，失去了作为人的本质，是自我意识陷入了泥沼。或许这种感觉就是意识本身发出的求救信号。&lt;/p&gt;
&lt;p&gt;自由意识的沉沦与抽离感的警示可能是人类持久面临的问题。是否能够解决，或者是否需要解决，都是值得思考的问题。&lt;/p&gt;
&lt;p&gt;在我的人生哲学里，抽离本身的不适是一个信号，告诉我现状需要改变。或许是工作内容，或许是生活方式，或许是心态。总之，这种不适感让我意识到自己需要去寻找新的刺激与动力，去打破现有的生活模式。可能这种感觉也是我选择读博的原因之一吧。&lt;/p&gt;
&lt;p&gt;写到这里，我对抽离感的探讨可能已经有限偏离了最初的感受，我对其进一步的理解也许需要更多的时间与经历去沉淀。&lt;/p&gt;
&lt;p&gt;不过我觉得很有益处的一点是，当你意识到抽离感时，可以尝试把生活切出非同质化的缝隙。&lt;/p&gt;</description>
    <pubDate>Thu, 25 Dec 2025 00:00:00 GMT</pubDate>
  </item><item>
    <title>纵有疾风起，人生不言弃——《强风吹拂》</title>
    <link>https://fengjieli.top/reading/%E5%BC%BA%E9%A3%8E%E5%90%B9%E6%8B%82</link>
    <guid>https://fengjieli.top/reading/%E5%BC%BA%E9%A3%8E%E5%90%B9%E6%8B%82</guid>
    <description>&lt;p&gt;自从3月底结束实习回到天大开始，我就开始了跑步。起初的动机很简单，就是因为学校的健身房没有淋浴间，因此不想在早上健身的时候做有氧，所以开始尝试夜跑。本以为跑步对我来说没有什么吸引力，我甚至一度怀疑自己能否坚持下去，但自从第一个5km跑完后，我喜欢上了跑步。&lt;/p&gt;
&lt;p&gt;很难描述这种喜欢，它包含了很多方面，不仅有跑步时大脑放空、身体舒展的轻松；也有跑完后肌肉酸痛、身体疲惫但脑子快乐的快感；更有在设立一个个目标后努力达成的那种成就感。就这样坚持到现在已经跑了两个月，4月跑量是100km，5月目前跑了120km，预计能冲到150km，并且也在上上周跑了第一个半马。除了身体力行之外，其实内心也想看看别人对于跑步的看法，由于鄙人不善社交言辞，于是选择从书中寻找知己，于是读了两本书，村上的《当我跑步时我谈些什么》和这本《强风吹拂》。村上的读后感我还在整理，随想要比小说更难提炼一点。因此我先来介绍一下这本《强风吹拂》。&lt;/p&gt;
&lt;p&gt;《强风吹拂》的故事背景在日本东京，宽政大学的新生藏原走（阿走）在偷窃面包逃跑的过程中偶遇了同校学长清濑灰二（灰二哥），后者发现这个逃跑的人跑姿十分优秀，又进一步认出这个人是高中时期全国知名的田径健将藏原走，于是骑车追上阿走，邀请他入住学校附近的竹青庄宿舍（宽政大学的长跑队宿舍）。阿走之所以落得十分落魄的田地，是因为其高中时期不想忍受学校田径队森严的上下级关系与文化与教练发生肢体冲突，选择不走体育这条路，文化考入宽政大，并与家人闹掰。&lt;/p&gt;
&lt;p&gt;在竹青庄，阿走遇到了活泼可爱的同是新生的双胞胎兄弟(城大和城次)、热爱读漫画书的王子、外国黑人留学生穆萨、家住山区的神童、热爱电视答题节目与忙于找工作的King、毕业困难但精通计算机的尼古学长（吸烟）、通过司法考试的雪彦。加上阿走与灰二，正好十个人，正好是能够参加箱根驿传的队伍人数。这十个人的性格十分鲜明，每个人的性格、经历与未来希望的路也都很不一样，小说对其刻画十分到位，凭我拙劣的文字很难一一描述，十分推荐阅读原文。&lt;/p&gt;
&lt;p&gt;竹青庄是一个双层的建筑，十个人正好住满所有房间。它虽然在市区距离学校很近，但其周围却有着难得的僻静，但这里的住宿条件很简陋，房子很破甚至进门的头顶上破了一个大洞。因此房租也就难得得便宜，加上还有灰二哥全权负责竹青庄的大小事宜，十个人的饮食起居。&lt;/p&gt;
&lt;p&gt;阿走觉得自己轮到这么好得事情，这里面肯定有些其他的事情。果然，在阿走入住凑齐十个人后，灰二哥宣布了他要组队参加箱根驿传的决定。阿走知道箱根驿传的难度，也知道除了他和灰二哥之外，其他人的水平其实都比较一般，向灰二哥提出了自己的疑问。但灰二哥说他邀请每个人住进来都是看到了其潜力的：双胞胎初中参加过足球队，王子对一件事情有着超常的专注、穆萨来自非洲身体条件十分优渥、神童家住山区对爬山十分熟悉、尼古学长高中参加过田径队、其他人也都在身形上有着不错的条件。但除了神童、尼莫之外，其他人都对训练不是那么乐意。但随着灰二哥的坚持与神童的交涉，大家也都开始接受了箱根驿传的训练。&lt;/p&gt;
&lt;p&gt;箱根驿传是一项日本国民级的比赛，往往在过年期间举办，全国只能有21支队伍参加，其中10支是种子队，可以明年继续参加，而竹青庄的诸位目标就是今年成为种子队。在竹青庄各位一起的努力下，他们也确实做到了。但这中间经历了太多的矛盾、和解、争吵、妥协以及对人生对过往对未来的思考。但在箱根当天，事情并不是一帆风顺，神童发烧了。但大家一起克服困难，最终成功完成了比赛并拿到第十名种子队名额。&lt;/p&gt;
&lt;p&gt;这本小说算是一个十分经典的热血小说，在现实生活中基本上不能发生。但有时候人就是需要这样的故事来激励自己，小说中的每个人都有鲜明的性格，仿佛我们性格中的一个个方方面面，在他们努力的过程中，我们也在不断地认识自己。&lt;/p&gt;
&lt;p&gt;故事结尾，竹青庄又来了一批新人，阿走和双胞胎担当起来了学长的工作，带领着新人一起向着箱根驿传前进。最后阿走问了一个问题，“那，你喜欢跑步吗？”，放在现实中，我觉得可以换成“那，你喜欢生活吗？”&lt;/p&gt;
&lt;p&gt;这个问题，不同的人在人生的不同阶段可能会有着不同的答案，但我现在认为，只要还活着，就是在热爱着自己的生活。就像长跑一样，是一个人的修行，即使在马拉松比赛中，也不会有人和你较量的时间长过自己。所以，关注自己，接受自己，热爱自己，这就是读完这本小说给我的感受。&lt;/p&gt;</description>
    <pubDate>Sun, 25 May 2025 00:00:00 GMT</pubDate>
  </item><item>
    <title>初窥历史——《明朝那些事》</title>
    <link>https://fengjieli.top/reading/%E6%98%8E%E6%9C%9D%E9%82%A3%E4%BA%9B%E4%BA%8B</link>
    <guid>https://fengjieli.top/reading/%E6%98%8E%E6%9C%9D%E9%82%A3%E4%BA%9B%E4%BA%8B</guid>
    <description>&lt;p&gt;首先介绍一下与这册书的渊源吧，其实挺久远的，高中时就听说过当年明月与《明朝那些事》的大名，但当时对历史没那么感兴趣，于是选择了一些魔幻小说（《冰与火之歌》）来读。在高三的时候，语文老师对我们的熏陶让我开始对苏轼感兴趣，于是读了林语堂先生的《苏东坡传》，感觉历史也很有趣，于是高考完立刻购入了全套实体书，但草草读了前三册就放弃了，似乎是当时的我读书不够带脑子，历史的逻辑脉络梳理不清，读到后面出场人物越来越多，脑子有点乱，便半途而废了。&lt;/p&gt;
&lt;p&gt;这次重读，有两个契机：一是个人心性的成长，当年明月写的这本书不只有历史，更吸引人的是通过历史表达出来的思想，此时经历了很多事情的我对他的想法很感兴趣；二是当时我在北京实习，生活的压力和工作的浮躁让我想寻找一种安静的消遣方式，当时我带了kindle过去，于是我就选择了读书。&lt;/p&gt;
&lt;p&gt;好了，扯了这么多，总算介绍完和这本书的渊源了。下面来讲讲读完这本书后的想法。&lt;/p&gt;
&lt;p&gt;我首先体会到的，就是一个字，“巧”，或者也可以说是历史的必然性。从朱元璋多次谋生失败被迫起义参军，到朱由检力挽狂澜但一次次与成功失之交臂。很多历史事件站在后来者的角度上来看，是很多次决策的巧合导致，但对于当局者来说，每次决策似乎又都是必然。 就比如明太祖朱元璋，他曾讨饭、当和尚，但都被逼得干不下去，以至起义；但即使他没有起义，也可能有另外的李重八、王重七等等其他人代替他，创立一个新的王朝。朱由检虽然勤政力挽狂澜，但大明内忧外患不止，纵然没有李自成，也会有其他的人起义。有些事情就是一定会发生，无论怎么样，不以人的意志为转移。&lt;/p&gt;
&lt;p&gt;我的第二个感想就是，人的意志虽然不能改写历史的大方向，但正是这些意志才让历史闪闪发光，才让历史有了意义。于谦、王守仁、杨涟、戚继光以及保守争议的张居正等等，他们身处在希望渺茫的环境，遵从主流意见无疑是不用背锅、风险最小的选择，但他们却坚守自己的内心的想法，不惜以身赴死。这样的人虽然不能改写历史的大方向，但却能在几年，几十年甚至几百年的尺度上影响历史的走势。也正是有了这些铁骨铮铮、正大光明的人存在，我们才能找到在逆境中坚守自身的勇气。也因为这些人，历史才不会是乏味的记叙，而是有声有色、波澜起伏的故事。即使多年后，我相信这样的人，这样的精神依旧会流传下去，名垂青史。&lt;/p&gt;
&lt;p&gt;我的最后一个感想就是，历史其实也是无趣的。这种无趣并不是说历史中的各个事件，而是历史发展的中轴线似乎是不变的。人类不会以史为鉴，导致不同朝代的发展似乎是一个个循环，总是开朝盛世、逐步走下坡路，偶尔有几十年雄起，但最后又会转化为贪官污吏、内忧外患。那为什么要读历史呢？其实我觉得绝大多数人活这一辈子，就是世界上一个普普通通的人，不会影响历史进程，能影响几个人的人生就算很厉害了。照这么说，我的生命对历史发展几乎没有意义，多我一个不多，少我一个不少。&lt;/p&gt;
&lt;p&gt;那为什么要活着呢？这个问题，我在读研后问了自己不止一次。我目前的答案是我不想死，为什么呢，因为有很多好奇的东西还没探索完、很多好玩的东西没玩完、该经历的没经历完… 即使生活中没有这么多东西，我觉得面对人生也是一种勇气，就像西西弗斯一样，来回地滚石头其实也是一种人生。我目前认为，活着只是没有一个能说服我去死的一个理由。&lt;/p&gt;
&lt;p&gt;好了，其实说了这么多，也只是我初窥历史后的一点点想法，很多内容由于我的见识与读书不足可能会很成熟，还请谅解，不过对于这册书，我认为他无疑是很好地历史书籍，虽然有娱乐化的内容，但整体还是比较客观，面面俱到的。和这册书牵扯了9年之后也终于读完了~&lt;/p&gt;</description>
    <pubDate>Sun, 27 Apr 2025 00:00:00 GMT</pubDate>
  </item><item>
    <title>NJU-Software Analysis-DataFlow Analysis Foundations-II</title>
    <link>https://fengjieli.top/research/softwareAnalysis05</link>
    <guid>https://fengjieli.top/research/softwareAnalysis05</guid>
    <description>&lt;h2 id=&quot;relate-iterative-algorithm-to-fixed-point-theorem&quot;&gt;Relate Iterative Algorithm to Fixed-Point Theorem&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#relate-iterative-algorithm-to-fixed-point-theorem&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;不动点理论的前提是: 1. f: L &lt;span&gt;→&lt;/span&gt; L是单调的 2. L是有限的。&lt;/p&gt;
&lt;p&gt;如果可以将数据流分析问题映射到不动点理论中，则可以证明分析算法的收敛性。&lt;/p&gt;
&lt;p&gt;对于数据流分析来说，每个节点的output是在有限值域中的，每个都是一个Lattice，整个程序是多个finite lattice的笛卡尔积，也是一个finite lattice。因此条件2满足。&lt;/p&gt;
&lt;p&gt;然后需要证明数据流分析算法(1. transfer function, 2.join/meet on control flow)的单调性:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250402085227.png&quot; alt=&quot;proof&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;q3-when-will-the-algorithm-reach-the-fixed-point&quot;&gt;Q3: When will the Algorithm Reach the Fixed Point?&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#q3-when-will-the-algorithm-reach-the-fixed-point&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;从Lattice的top&lt;span&gt;→&lt;/span&gt;bottom的最长路径，称为lattice的height。&lt;/p&gt;
&lt;p&gt;最坏情况下，每次迭代只有一个node在其lattice上走一步，假设CFG中k个node，每个node的lattice高度为h，那么总共需要k*h次迭代才能达到不动点。&lt;/p&gt;
&lt;h2 id=&quot;may-and-must-analyses-a-lattice-view&quot;&gt;May and Must Analyses, a Lattice View&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#may-and-must-analyses-a-lattice-view&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;May和Must分析的应用场景不同，May-analysis一般用于寻找”可能”的错误，而Must-analysis一般用于寻找”一定存在”的错误。所以unsafe和safe的定义不同。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250402092915.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;how-precise-is-our-solution&quot;&gt;How Precise Is Our Solution?&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#how-precise-is-our-solution&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Meet-Over-All-Paths Solution (MOP)&lt;/p&gt;
&lt;p&gt;MOP[&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.5806em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3117em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:0em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;] = &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.5556em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;∪&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; / &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.5556em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;∩&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.13889em;&quot;&gt;F&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3283em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot; style=&quot;margin-right:0.13889em;&quot;&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;(OUT[Entry]), &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;∀&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; path P from Entry to &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.5806em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3117em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:0em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;该方法存在的问题:&lt;/p&gt;
&lt;p&gt;Some paths may be not executable &lt;span&gt;→&lt;/span&gt; not precise.&lt;/p&gt;
&lt;p&gt;Unbounded or not enumerable paths &lt;span&gt;→&lt;/span&gt; impractical.&lt;/p&gt;
&lt;p&gt;把MOP结果当成一个precision metric. 和迭代算法的区别在与merge的顺序,即用了分配率的形式:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250402095403.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以推出MOP其实是迭代算法的precision上界: F(x) &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.5556em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;∪&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; F(y) &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7719em;vertical-align:-0.136em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;≤&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; F(x &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.5556em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;∪&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; y), MOP &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7719em;vertical-align:-0.136em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;≤&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 迭代算法。&lt;/p&gt;
&lt;p&gt;原因是在这个例子的lattice上越往上越不准。当F可分配时，二者一样准。&lt;/p&gt;
&lt;p&gt;之前遇到的所有Gen/kill问题都是F可分配的。&lt;/p&gt;
&lt;h2 id=&quot;constant-propogation-non-distributive&quot;&gt;Constant Propogation (non-distributive)&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#constant-propogation-non-distributive&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;定义: Given a variable x at program point p, determine whether x is guaranteed to hold a constant value at p&lt;/p&gt;
&lt;p&gt;A Must-analysis.&lt;/p&gt;
&lt;p&gt;1.映射到Lattice, 2. Meet operator &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.5556em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;∩&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250402100841.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;3.Transfer Function:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250402101615.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个function就不是单调的了，因为otherwise的情况可能直接就回到top了。&lt;/p&gt;
&lt;p&gt;non-distributive的例子:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250402102108.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到MOP在这个例子中更加准确.&lt;/p&gt;
&lt;h2 id=&quot;worklist-algorithm---an-optimization-of-iterative-algorithm&quot;&gt;Worklist Algorithm - an optimization of Iterative Algorithm&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#worklist-algorithm---an-optimization-of-iterative-algorithm&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250402102545.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;</description>
    <pubDate>Wed, 02 Apr 2025 00:00:00 GMT</pubDate>
  </item><item>
    <title>Syntactic Capabilities of LLM</title>
    <link>https://fengjieli.top/research/paper_syntactic_llm</link>
    <guid>https://fengjieli.top/research/paper_syntactic_llm</guid>
    <description>&lt;p&gt;Recently, I’m trying to explore potential applications of LLMs in SE tasks, such as Automated Program Repair and Static Analysis. And the capabilities of LLMs on these tasks are build on their syntactic understanding of programming languages. What’s more, I’m also insterested in what extent can LLMs be used to understand and programming languages.&lt;/p&gt;
&lt;p&gt;So I read this paper, &lt;a href=&quot;https://dl.acm.org/doi/10.1145/3639476.3639768&quot; class=&quot;external&quot;&gt;ICSE-NIER’24: Which Syntactic Capabilities Are Statistically Learned by Masked Language Models for Code?&lt;svg aria-hidden=&quot;true&quot; class=&quot;external-icon&quot; style=&quot;max-width:0.8em;max-height:0.8em&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;path d=&quot;M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this paper the authors find that LLMs under study fail to predict some syntactic capabilities.&lt;/p&gt;
&lt;h2 id=&quot;methodology&quot;&gt;Methodology&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#methodology&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In this paper, the authors proposed a evaluation method named &lt;a href=&quot;https://github.com/WM-SEMERU/SyntaxEval&quot; class=&quot;external&quot;&gt;SyntaxEval&lt;svg aria-hidden=&quot;true&quot; class=&quot;external-icon&quot; style=&quot;max-width:0.8em;max-height:0.8em&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;path d=&quot;M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Its evaluation process mainly consisted of two steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Evaluating syntactic capabilities:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It first find one AST node type to be analyzed and then replace all AST node of this type in the AST with label &lt;code&gt;&amp;#x3C;mask&gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Employ the tested MLM to infer the masked tokens, and then travel the AST using in-order traversal algorithm.&lt;/li&gt;
&lt;li&gt;Compute 3 similarity metrics (i.e., Jaccard, Levenshtein and Sorensen-Dice) of the list of predicted nodes and the ground truth nodes.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Evaluating Causal Interpretabiltiy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;To analyze the performance of MLMs on the masked source code, SyntaxEval design a treatment &lt;strong&gt;T&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.4511em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; which randomly masked same amount of tokens in the source code.&lt;/li&gt;
&lt;li&gt;It calculate Average Treatment Effect (&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.4306em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1132em;&quot;&gt;τ&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;) = E [Y&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.4511em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; - Y&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.4511em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;] to see the effect of each treatment.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;results&quot;&gt;Results&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#results&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In their experiment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;T&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.4511em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; (treatment 0): mask source code randomly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;T&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.4511em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; (treatment 1): mask source code by AST node type.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dataset&lt;/strong&gt;: 50k python snippets from github span from 2022.01.01 to 2022.12.31, and sampled 8k for experiment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They apply SyntaxEval on two MLMs:&lt;/p&gt;


























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Id&lt;/th&gt;&lt;th&gt;MLM&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th&gt;Layers&lt;/th&gt;&lt;th&gt;Vocab.&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;M₁&lt;/td&gt;&lt;td&gt;CodeBERTa-small-v1&lt;/td&gt;&lt;td&gt;84M&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;52,000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;M₂&lt;/td&gt;&lt;td&gt;codebert-base-mlm&lt;/td&gt;&lt;td&gt;125M&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;50,265&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The results found:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The performance of &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.13889em;&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; and &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.13889em;&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; are similar, no siginificant difference. Even the performance of &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.13889em;&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is lower than &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.13889em;&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, indicating the MLMs can not learn syntactic capabilities.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Furthermore, the results in Figure2 also shown that the MLM struggle to predict AST node type &lt;code&gt;comparison_operator&lt;/code&gt; and &lt;code&gt;string&lt;/code&gt;, etc, only perform better on &lt;code&gt;identifier&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- ![Table2](https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250525153149.png){ width=40% } --&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250525153149.png&quot; alt=&quot;Table2&quot; style=&quot;width:80%;&quot;&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/feng-jay/pichost/master/img/20250525153525.png&quot; alt=&quot;Figure2&quot; style=&quot;width:80%;&quot;&gt;
&lt;/div&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Considering the Causal Interpretability, the authors found the &lt;strong&gt;T&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.4511em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; have negaitive effect on the performance of MLMs as shown in Table2. This suggests that although transformers are predicting AST node types with confidence (performance in Table2 is relativly high), these syntactic features are not particularly relevant compared to predicting any other set of unstructured tokens in the snippet.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#conclusion&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This paper proposed an interesting 2-step evaluation method to evaluate the syntactic capabilities of MLMs. And find the MLMs are not understanding syntax rules of PLs. Recently, there are many SE works apply LLM/MLMs on code generation / program repair / etc tasks, and many of them have shown the limitation of the LLM’s reasoning capabilities. This paper provides a new perspective to understand the syntactic capabilities of LLMs, and it is worth further exploration of how to combine LLM/MLMs with more SE domain knowledge to enhance their capabilities in practice.&lt;/p&gt;</description>
    <pubDate>Tue, 01 Apr 2025 00:00:00 GMT</pubDate>
  </item><item>
    <title>Paper Roundup</title>
    <link>https://fengjieli.top/research/paper_reading</link>
    <guid>https://fengjieli.top/research/paper_reading</guid>
    <description>&lt;h2 id=&quot;llm-for-code&quot;&gt;LLM for Code&lt;a role=&quot;anchor&quot; aria-hidden tabindex=&quot;-1&quot; data-no-popover href=&quot;#llm-for-code&quot; class=&quot;internal&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;../research/paper_syntactic_llm&quot; class=&quot;internal&quot; data-slug=&quot;research/paper_syntactic_llm&quot;&gt;paper_syntactic_llm&lt;/a&gt;&lt;/p&gt;</description>
    <pubDate>Mon, 31 Mar 2025 00:00:00 GMT</pubDate>
  </item>
    </channel>
  </rss>