TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Visual programming should start in the debugger

126 点作者 iamwil10 个月前

17 条评论

donadigo10 个月前
I sympathize a lot with this post. Today, modern IDE&#x27;s still don&#x27;t provide automatic ways to inspect program execution and nicely visualize it. Instead, they rely on having you place all the breakpoints, step-step-step and restart everything again if you did not inspect something in time. I don&#x27;t want to insert print statements that end up clogging the console completely. This workflow also quickly breaks with a lot of logging.<p>I&#x27;m quite a bit into developing more tooling around that, and it&#x27;s really hard - developers particularly want tools that completely integrate with existing IDE&#x27;s. Debugger infrastructure is usually not built to be very exstensible or accessible. For my extension for Visual Studio <a href="https:&#x2F;&#x2F;d-0.dev&#x2F;" rel="nofollow">https:&#x2F;&#x2F;d-0.dev&#x2F;</a> I had to put serious effort into making sure it all still works correctly with VS breakpoints which is extremely difficult when the debugger expects all of the code to be in the same place all the time.
sroussey10 个月前
I see three issues with the nice ideas presented:<p>1. Incentives.<p>I’ve made my contributions to debuggers (Firebug mostly), and devs are not willing to pay for it (we had donations, but I’ve seen people create projects in the space) and so tool makers (browser makers in this case) eat the cost and see it as a cost center. <i>Because of this, the debuggers are at the abstraction layer of the tool itself.</i> The tools change and the cost of keeping the debugger in sync (usually well after the feature is out there) is already high enough.<p>I put hooks into Firebug to make it better for higher level debugging of frameworks. Later I made a paid extension [*]. It paid for a new computer, and spawned many framework specific extensions over time. I pushed Chrome&#x27;s DevTools team to add some of the same hooks. Sadly, a decade later, many of those framework level extensions don&#x27;t use what is available. Again, it is a cost center for the framework development, so just enough gets done, no more.<p>2. Tools are Siloed.<p>You may have OpenTelementry, etc., but that data is siloed off somewhere. The IDE doesn&#x27;t have it. But the IDE has extensions, so maybe someone like Microsoft can bridge the gap and put up a sidebar that is a heatmap of the time that that code takes on the CPU.<p>3. Levels of Abstraction.<p>When you talk about state and data modeling, not only is it siloed, but the levels of abstraction are plentiful. It is somewhat possible, but I refer you back to 1--Incentives.<p>[*] <a href="https:&#x2F;&#x2F;vimeo.com&#x2F;showcase&#x2F;2541003&#x2F;video&#x2F;75271334" rel="nofollow">https:&#x2F;&#x2F;vimeo.com&#x2F;showcase&#x2F;2541003&#x2F;video&#x2F;75271334</a>
评论 #41009684 未加载
agumonkey10 个月前
I&#x27;m still shocked how limited our tools are. People in the early 2000s could animate complex 3d scenes in real time with physics and soft body dynamics. But tracing a few variables feels like an herculean effort.<p>Maybe it&#x27;s time to flip the game on its head. Bring reactive, lispmachines, responsive UIs.. I don&#x27;t know.
评论 #41010173 未加载
评论 #41013226 未加载
评论 #41009719 未加载
TuringTest10 个月前
I&#x27;ve always said so. The essence of visual programming is watching code and runtime values juxtaposed, not connecting code primitives with fancy connectors.<p>Modern IDEs have lots of visual features, specially tailored to support production languages. Inspection panels, tooltips with variable values and function definitions...<p>Surely we could add more spatial visualization tools to them. But the step up from <i>printf</i> to a debugging inspector panel was on its own a great advance in building a mental model of the program state and making sense of its behaviour, which is what visual programming is all about.<p>For programmers interested in advanced visual tools tailored to software creation, see Bret Victor&#x27;s essays on notations:<p><a href="https:&#x2F;&#x2F;worrydream.com&#x2F;MediaForThinkingTheUnthinkable&#x2F;" rel="nofollow">https:&#x2F;&#x2F;worrydream.com&#x2F;MediaForThinkingTheUnthinkable&#x2F;</a><p><a href="https:&#x2F;&#x2F;worrydream.com&#x2F;LadderOfAbstraction&#x2F;" rel="nofollow">https:&#x2F;&#x2F;worrydream.com&#x2F;LadderOfAbstraction&#x2F;</a>
diegof7910 个月前
If you search for the keywords “program understanding” and “program visualization” in Google Scholar, you’ll see a lot of research on how to visualize and comprehend systems. Around 2007, one visualization that caught the internet’s attention was CodeCities by M. Lanza, and there is also Moose[1], which is based on Pharo and provides abstractions to query and visualize code bases.<p>But, for some reason, none of these tools catch the attention of the most popular IDEs. I hypothesize that there are major roadblocks to implementing this in a generic and useful way.<p>The first one is the variety of languages, frameworks, and build tools. For example, analyzing a TypeScript+React code base is not the same as analyzing a TypeScript+Vue code base, even when both use TypeScript and the TSC API is very easy to use.<p>The second roadblock is that useful visualizations also depend on the characteristics of your system, and creating them is not easy.<p>Maybe things will change with the addition of AI to analyze code bases, but so far, all the tools I’ve seen are either very niche or very short-lived.<p>[1]: <a href="https:&#x2F;&#x2F;moosetechnology.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;moosetechnology.org&#x2F;</a>
rpcope110 个月前
Having actually partially designed and maintained a visual programming product with I guess what would be called a time travel debugger (among many other fascinating and strange features) inside of a major technology company, the biggest push back was always from developers themselves. These things sound good, and often they&#x27;re very useful to those without strong programming backgrounds, but inevitably developers are pretty aggressive about poo-pooing tools like this as lots of things are much harder to implement, like diffing for example. The tool itself was honestly very radical (we were able to do a ton of really cutting edge things around resource scheduling, containerization pre-Docker, real actual shared time travel debugging at massive scale), but in the end, I think the company shitcanned it for something much simpler.
评论 #41013498 未加载
hcarvalhoalves10 个月前
Agreed. Visual programming focuses on visualising the structure of the _program_, but what matters more is visualising the structure of the _data_ and, even more importantly, what the program is doing to the data (visualising in the time domain).<p>A major bottleneck for people learning programming is developing a mental model of what is in the memory during the runtime and what it looks like. The most successful introductions to programming start by making drawings or small games since it&#x27;s more intuitive for beginners to iterate and have immediate feedback.
smusamashah10 个月前
Screenshot at the end of the article is from this video. He calls it spatial programming and mentions some other tools which did that in the start of the video.<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=eQgxFuw8f1U" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=eQgxFuw8f1U</a>
评论 #41009601 未加载
评论 #41012535 未加载
aantix10 个月前
I developed Call Stacking as a visual debugger.<p>It captures everything for a given request - each method call, params&#x2F;argument&#x2F;return values, class name&#x2F;method&#x2F;line of execution.<p>You can visibly see which method called which, as each method call is nested relative to its parent callee, in a single consolidated timeline.<p><a href="https:&#x2F;&#x2F;callstacking.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;callstacking.com&#x2F;</a>
skobes10 个月前
Similar post from a few days ago:<p>&quot;We need visual programming. No, not like that.&quot; <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=40937119">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=40937119</a>
corysama10 个月前
Shoutout to <a href="https:&#x2F;&#x2F;whitebox.systems&#x2F;" rel="nofollow">https:&#x2F;&#x2F;whitebox.systems&#x2F;</a><p>It only really works with C-with-Classes style C++. But, the fact that it works at all is pretty neat.
gumby10 个月前
People talk about using LLMs to write code, but is there any work on using RNNS (perhaps LLMs) to <i>explain</i> what a piece of code does? Seems like that might be a good feature for a debugger.
评论 #41016489 未加载
评论 #41012837 未加载
cyberax10 个月前
Yeah. Debugging is getting _way_ less attention than it should. I know some people who _boast_ that they don&#x27;t use a debugger. To me it feels like a doctor saying: &quot;We don&#x27;t use new-fangled X-Rays here, you should be able to find problems with just a stethoscope&quot;.<p>And good debugging support doesn&#x27;t need to be some fancy &quot;Minority Report&quot; style 4D animated UI. Just give us good type rendering support, an easy ability to chain breakpoints and set conditional breakpoints, &quot;watch variable&quot; support. Some other things: &quot;where did this value came from?&quot;, &quot;watch for value use&quot;.<p>Go is an especially bad example. Its debugger doesn&#x27;t even allow custom type rendering, so if you have something like a custom generic map container, you can&#x27;t inspect it at the debug time.
评论 #41010009 未加载
alfiedotwtf10 个月前
Paper and pen. Sure might not work on LARGE projects, but when I’m reverse engineering something or trying to debug, I always start with a control flow diagram… works a treat!<p>But in the past 6 months I’ve started to use graphviz and other tools to quickly document code paths for others
andoando10 个月前
I had a similar idea. I was working with some complex recursive functions and it was impossible to figure out what was going on. Trying to parse through 1000 console logs was nearly impossible so I had the idea of rendering the function call stack and attaching the logs to where in the stack it was called from and rendering it as an interactive graph.<p>Its mostly just a demo but I think something like this a standard tool would be really helpful. <a href="https:&#x2F;&#x2F;github.com&#x2F;ando818&#x2F;Svelte-Logger">https:&#x2F;&#x2F;github.com&#x2F;ando818&#x2F;Svelte-Logger</a>
评论 #41013668 未加载
ProfessorZoom10 个月前
The debugger? You mean console.log(&quot;here&quot;) ?
评论 #41012562 未加载
Wooclurs10 个月前
The article is missing all industrial visual programming.