最近看到 John Carmack 2018 年的貼文中的幾段話:
I’m not a Unix geek. I get around ok, but I am most comfortable developing in Visual Studio on Windows. I thought a week of full immersion work in the old school Unix style would be interesting, even if it meant working at a slower pace. It was sort of an adventure in retro computing — this was fvwm and vi. Not vim, actual BSD vi.
In the end, I didn’t really explore the system all that much, with 95% of my time in just the basic vi / make / gdb operations. I appreciated the good man pages, as I tried to do everything within the self contained system, without resorting to internet searches. Seeing references to 30+ year old things like Tektronix terminals was amusing.
In the spirit of my retro theme, I had printed out several of Yann LeCun’s old papers and was considering doing everything completely off line, as if I was actually in a mountain cabin somewhere, but I wound up watching a lot of the Stanford CS231N lectures on YouTube, and found them really valuable. Watching lecture videos is something that I very rarely do — it is normally hard for me to feel the time is justified, but on retreat it was great!
I used a common pattern for me: get first results with hacky code, then write a brand new and clean implementation with the lessons learned, so they both exist and can be cross checked.
心得:
我覺得我這陣子想做的,跟 John Carmack 很像,在老舊的思維跟環境裡開發一些老舊或是被遺忘的演算法,並非捨棄新的技術,而是我想用以前那些優秀的程式設計師的想法,去重新思考一些專案。讓這些舊方法再次復興起來。
如同近代物理學中的弦論描述粒子行為的方程式,早在 18 世紀的歐拉就已經提出。
我想從舊的時代,去重新觀看新時代的面貌。因為許多舊的方法與系統哲學,似乎被遺忘的差不多了,但我相信這些傳統的東西有它的價值,而且我一直相信以前的人在某方面而言,比現在聰明。
當我謙虛地再次學習過這些復古的知識後,或許能彌補我的不足,也彌補我思考上的死角,也許能提昇我的思維速度。
我一直很認同貝爾實驗室發明 Unix 的工程師,他們的程式設計哲學。我將這些哲學再次引述於此:
- Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features".
- Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input.
- Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them.
- Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you've finished using them.
我一直想要在有限的時間,將能力再提昇一點點。
我想是時候複習老派跟復古的知識了!
留言
張貼留言