编程与软件工程blog.sanctum.geek.nz编辑精选
把 Unix 当作 IDE
Using unix as your IDE
2012 — 2023,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这是一篇系列教程,介绍如何把 Unix 命令行工具(vim、make、grep、shell 等)组合起来当作完整的开发环境使用,替代传统的一体化 IDE。文章在 2012 年和 2023 年两度登上 Hacker News 首页,引发了关于命令行与 IDE 各自优劣的长期讨论。
为什么经久不衰:它把 Unix '每个工具只做一件事并做好'的哲学落到开发工作流上,十多年后仍是学习命令行开发环境最好的入门参考之一。
HN 评论精选
命令行工具可组合、可扩展,能完成 IDE 没有预设的任意任务
我不想贬低 IDE 厂商,JetBrains 的产品确实很棒。但对我们这类 Linux 职业开发者来说,一切都是文本,用 Unix 文本工具能获得最大杠杆。用 grep -lR 配合 xargs sed 一次重构 50 个文件实在太爽了;想看进程加载了哪些库?cat /proc/$pid/maps;想知道进程往哪里写日志?ls -hal /proc/$pid/fd/。GUI IDE 只能做它被设计好的事,而命令行是有史以来最可扩展、最可组合的环境之一,40 年的成功就是证明。
shanemhansen查看英文原文
I don't want to dis IDE makers. There are folks such as jetbrains that make an amazing product. But at the end of the day, for us linux-type professional developers, it's all text. You have maximum leverage with unix text editing tools. Refactoring 50 files at once by doing something like: grep -lR 'old_method' | xargs sed -ie 's/old_method/some+other()+expression/g' is just plain awesome. Want to find out what libraries a process is using? cat /proc/$pid/maps Want to find out where that process is logging to? ls -hal /proc/$pid/fd/ Basically it's often hard to use a gui ide to accomplish an arbitrary task if the IDE wasn't built for it, or if no one has taken time time write plugins. At the risk of gushing, the command line is just one of the most extensible, composable environments ever invented, and it's success over the past 40 years proves it.
惋惜新一代开发者只会 GUI IDE,不了解 Unix 开发传统
一方面,我很高兴有人用当下流行的博客教程风格来传播这套东西,看到自己偏爱的环境被布道是件好事。另一方面又让人扶额:过去 40 年里最简单、文档最完善、最强大的开发传统竟然还需要这种科普。整整一代开发者从学校毕业时以为'构建'就是在 IDE 界面里按个按钮,'写程序'就是启动一个向导往新目录里吐出一堆文件,这实在令人沮丧。
ajross查看英文原文
On the one hand, I'm pleased that someone is posting this in the new-fangled bloggy tutorial style popular among the youth of today. It's nice to see my preferred environment evangelized. On the other, it's a giant facepalm that the simplest, best documented, most powerful development tradition of the last 40 years actually needs this treatment. That there is a whole generation of developers who come out of school thinking that "building" is the action of pressing a button in an IDE GUI (and that "writing a program" means launching a big wizard that pukes a dozen files into a new directory) is just depressing. Oh, and get off my lawn.
文本搜索不等于语义级的代码导航和重构,Unix 工具算不上真正的 IDE
用 grep 搜 'foobar' 和找到名为 foobar 的函数的调用点是完全不同的两回事;emacs 能做的跨文件查找替换也不等于重构。我爱 emacs 和 Unix,但抱歉,它不是 IDE。IntelliJ 那才叫 IDE。
geophile查看英文原文
grepping for "foobar" is very different from finding invocations of the function named "foobar". Cross-file search and replace, which is doable from emacs, is different from refactoring. I love emacs and unix, but sorry, it's not an IDE. Intellij, now that's an IDE.
纠正措辞:Unix 不是'集成'开发环境,而是(分布式的)开发环境
我同意他的观点——这话我在 HN 上说过好几次——但不同意他的措辞。Unix 不是一个'集成'开发环境,IDE 意味着一个单体程序,Unix 不是。我更愿意说:Unix 就是一个开发环境——你用于开发的工具并不存在于一个单体程序之中。
scott_s查看英文原文
I agree with his sentiment - it's something I have said here on HN several times - but I disagree with his word choice. Unix is not an integrated development environment. To me, an IDE implies a monolithic program. Unix is not that. To differentiate it, I'm tempted to say that Unix is a distributed development environment to get across that the tools you use for development do not exist in one monolithic program. But I don't like that phrasing, either. Rather, I prefer this: Unix is a development environment.
历次讨论
同类还值得读
开源应用架构
The Architecture of Open Source Applications
《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。
编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选编程语言简史:简短、不完整且多半错误
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。
编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.comSQLite 是如何测试的
How SQLite is tested
SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…
编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选高级编程语言(2009)
Advanced programming languages (2009)
Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…
编程与软件工程上首页 8 次 · 2009–2022matt.might.net我的 Forth 与栈机器经历
Yosefk - My history with Forth & stack machines
作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。
编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选