内功外功

"welcome to my blog"

Posted by 张宇 on October 18, 2022

“Yeah It’s on. ”

前言

张宇 的 Blog 就这么开通了。

感谢huangxuan,借助他所介绍的技术开通了。


正文

自己认为的编程内功有:
@编程通用性的知识
*算法
*编译原理
*数据结构
*设计模式
*重构
*性能优化
*面向对象编程
*数据库
*抽象化
@语言内部的共性
*字符串处理
*正则表达式
*变量与常量
*控制语句if-else
*循环
*函数/方法
*类/对象/接口
*递归
*哈希表
*数组
@还有工具类的内功:
*构建工具 (通用知识)
*单元测试 (通用知识)
*依赖包管理 (通用知识)
*MVC 框架 (通用知识)
*代码质量检测 (通用知识)
*JSON 和 XML 设计 (通用知识)
*代码控制 (通用知识)
@IT外的相关知识:
*数学(离散数学,几何学)
*物理图形处理图形/UI设计等等,这些都是可以各种语言内都能交叉使用的共同的知识。这些知识学好了,大部分语言都可以用到,也都能或多或少在项目和应用中体现出来。
@编程的外功包括有:
*各种编程语言包括C++,javascript,java,php,C#,perl,python等各种编程环境,.NET, WAMP/LAMP,node.js 等各种IDE和编辑器,notepad++,vim,Visual Studio,Sublime等各种快捷键,各种包依赖管理器,npm,composer,Nuget各种版本管理器:git,svn,cvs各种单元测试工具各种构建工具各种MVC框架 等等内功和外功的相互关系和作用外功就是一个个的独立工具的使用知识。
其实就是一个和内功的具体实现,具体的外功是抽象内功的具体实现。
使用这些工具,你可以实践你的内功。由于内功的通用性很高,所以比如说你在java中能实现的数据结构,你可以立刻在C#中复制出一样的数据结构,如果再学了一个新的语言,比如说python,ruby,也能很快实现出一样的数据结构来。
因为是相通的。 内功就是你在一个工具里面能实现的东西,在另外的那个工具也能同样实现的东西。
另外,内功学好了,学习新的语言或者工具会很快,这是因为,所有的编程语言和工具都有很多共同点,知识语法改了一改,当然还有一些特有的特性,是要你针对学的。
所以假设当你还没有学习java或者C#的时候,你学java需要一年时间,学习C#也同样需要一年时间,但是如果先学习了java后,在学习C#(或先学C#再学java), 两个先后学习的时间总共只要1年2-3个月的时间,而不是2年。
这是因为你用Java去学习语言的共性,修炼了编程的内功。内功学好了,内功比外功重要,那要学习外功吗? 要,当然要,还要好好的学。因为你是通过外功来学习内功的。
没有语言本身,那里表现内功的载体呢。当你把一种语言作为载体,把所有语言的共性都学完了,然后就关注特定语言的特性了,有了内功的基础,这些外功很容易就啃完了,然后具体问题具体分析解决。
比如要跨平台的桌面程序,用Java;快速网站构建,用PHP;嵌入式编程,用C;网页内编程用javascript; 然后还有不同语言之间的通信,用json或者xml。而那些工具,可以辅助你的编程技巧,加速你的编程速度,提高你的编程质量,是你的编程得心应手,享受编程带来的乐趣。
总结编程的学习和提高,应该重点在编程内功上。通过某个编程语言和工具,去学习研究编程的通用功能和共性上。
这样就算未来有新的语言和技术出现,也能很快的适应新的语言和技术了。而外功的提高,是可以大大提高自己的工作效率,它和内功相辅相成。
外功作为辅助和内功的载体,也是很重要的。毕竟它可能是一个程序员吃饭看家领工资最具体的技术表现。\ —

作为偏向后端开发者,要常常记录技术细节。

后记

一直不变的规律就是一直在变,要追随时代,紧跟潮流。