打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
对于任何编程语言,数据结构和算法对于一个程序员重要到什么程度?
不懂不学习一些计算机的基础知识,他的技术极限是正无穷。

就像 Srinivasa Ramanujan 一样大量重复前人的工作,反倒有了过人的洞察力,从而有能力作出开拓时代的发现。

然而对大多数人而言,把前人的成果摆在眼前尚且不能立即掌握,要让他从零开始独自一人重复千万人的工作恐怕更是天方夜谭。

这样的结果恐怕只是,在技术上,独自一人被全世界丢在身后,奋起直追,然并卵。

然而现实是,这样被丢在后面的人很多。。。孩子你不孤独,就算没有能力理解和掌握一种算法,你也可以把它当作黑盒调用前人写好调好的程序;虽然你可能始终无法理解 i++ 和 ++i 在速度上的差别,没关系,现代的编译器始终为你优化,你无需再在意该使用哪一种;看到开源代码中出现 (i < 3)="" +="" (i="">< 1)="" 你或许一脸蒙逼,但其实就算老老实实写成="" i="" *="" 10="" ,开高优化,二者生成的代码也都相当于="" ((i="" +="" i)="" *="" 4="" +="" i="" +="" i)="">

相反,冒泡排序背到滚瓜烂熟,真到应用时始终不如语言标准库实现的快排;熟悉动态规划、递归递推之间的转化,你能写出时间复杂度只有 O(mn)、空间复杂度只有 O(m + n) 的 Levenshtein 距离的实现,却不如隔壁老王从维基百科、 Stackoverflow 上复制粘贴;熟悉 IEEE 754 的你借助位运算近似得到 1/sqrt(x) 的值再用牛顿法迭代造就传世平方根倒数速算法,然而机器性能的增长使得这一运算不再成为瓶颈,同时借助 GPU 和开源工具任何人都能写出更快更好的程序……

好了我写不下去了,神来之笔在计算机科学界比比皆是,没有坚实的跨领域基础在背后支撑,你玩不到光影绚烂的 3D 游戏,搜不到 Chris Lomont 发表的研究平方根速算法的论文,用不上带有多点触摸 Touchbar 的 nbmp ,甚至想写程序还要在卡片上打孔,不,计算机压根就不存在,算盘也不存在,数学也不存在,人类还在茹毛饮血……

话说回来,如果没有坚实的计算机科学基础,你也能灵活运用别人写好的算法、程序让周围的人、老板对你刮目相看;但是懂得原理终究是不一样的,只会调用别人写的 Levenshtein 距离而不懂得原理,如果想实现 Sublime Text 那样先筛选子序列再按编辑距离排序,你永远也想不到要怎样修改……
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
调侃录
计算机仿真程序告诉你《为什么现在不能出门》
有了书法基础后就要做这些事情,古人说的方法是经验之谈
一分钟护眼法让眼睛变明亮
陆俨少画语录之学习传统(三)
想成为编程高手,从基础做起
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服