Android编程的本质是什么?
一定要看到最后,结尾有惊喜
不是数学,更不是那些“你方唱罢我登场”的各种编程语言!
编程的本质是对现实建模。
OA是对企业建模。
电子商务是对交易建模。
AI是对人脑建模。
…
因此,对一个专业的程序员来说,面对一个具体的需求,首先要考虑的不是架构,不是编码,而是要思考,如何用抽象的计算机语言建立一个抽象模型,从而表达具体的人间现实。
然后,你再来思考,程序员为什么要喋喋不休的,不知不疲倦地争论哪门计算机语言更好呢?
抛却商业的喧嚣,不同编程语言的本质差别是什么?
C和C++的差别在哪里?
脚本语言(例如js)的使命是什么?
Matlab为何而生?
穿过语法看本质,不同语言之间的本质 差异 是对现实的描述方式,也就是 建模的方式。
C是一门面向过程的语言,它认为世界是由无数的过程构成的,数据的本质是存储,是过程的结果。
但在C++中,万物皆对象,数据和函数依赖于对象而存在。
选择C语言,就是选择用过程来对现实建模,选择C++就是选择用对象对现实建模。
而脚本语言,顾名思义,就是在具体平台上操作特定的元素,使它们“动”起来。例如,js的初衷就是在浏览器中操作具体的dom元素,从而使他它们“动”起来。
事实上,在web的早期,js用得最多就是在页面中实现各种“特效”,包括浮动广告,滚动字幕等。
因此可以说,js今天在前端开发中的地位,完全是无心插柳的结果,是对初心的 “背叛”。
而Matlab之所以受到算法科学家的青睐,一个不可或缺的因素是Matlab的编程范式特别适合对数学问题进行建模。
我们之所以绕了一大圈来谈具体语言,就是想要印证,一门计算机语言的根本目的就是用抽象的方式来描述具体的世界,也就是建模。这和写作是一样的。
从某种意义上说,专业的程序员和专业作家是一类人,一个用自然语言创作,一个用计算机语言。
对作家来说,写作的灵魂不是遣词造句,而是语句之后表达的思想。
因此,那些报考作文班的孩子,并不比看漫画的孩子更有可能成为专业作家。对专业程序员来说,编程的灵魂也不是代码和语法,而是它要构建的模型。
因此,在成为专业程序员的路上,那些较早接触编程语言的孩子,并不比其他孩子有本质的优势。
如何提升自己的编程水平
编程的学习是无止境的,干到老学到老,信息技术的变革非常的快,层出不穷的新技术需要你去了解,所以第一重要的是保持一颗爱学习的心,关注你的领域的发展变化。
第一阶段:踏踏实实学好基础,不要想有捷径。
第二阶段:快速提升在掌握基本编程知识之后,要大量地做练习,这个练习不见得要做书本中的,可以把你生活中遇到的问题,都想办法用写几行代码来解决。
生活中有太多太多的重复劳动可以用信息化的手段去解决,暂时不会不要怕,用你小时候吃奶的劲头去找些问题的解决方案,很多时候我们是找不到恰巧符合你需求的完整方案,但我们通过零散技巧的整合,最终都可以完成。
通过这样的过程,会极大地锻炼你需求调研、需求分析、产品设计、逻辑思维、技术攻关、代码编写、测试调优、服务器部署的全流程技能,你掌握了这些,工作中的CRUD还是事儿吗?谁都会说你一句,某某某什么都会。
第三阶段:向下扎根有了第二阶段的广度,如果你还继续做技术,那么就需要有一定的深度了。之前更多的是应用,用别人的成果去解决你遇到的问题,你并没有真正的生产内容。
这也是我一直认为的,为什么程序员被称为码农的原因。
你的开发过程其实只是一个装配过程,把别人写好的模块根据业务需求组合在了一起。
向下扎根,需要你懂得更多原理性的知识,如果觉得理论上有欠缺,别怕花钱,去报个班,这是对你自己的投资,或者考个研都可以。
有了扎实的理论功底,你会发现以前有些问题,似乎有了新的认识,你可能会觉得某个曾经用的sdk或者jar包,会导致一些莫名其妙的故障,现在突然明白为什么了。
在这基础上,你会创造一些东西,改进一些东西,形成你自己的体系。
体系一旦形成,那可就不是一般的程序员咯。
在结尾处给大家分享一下如何提升自己的Android成长路线图
相对应的学习资料可以上 GitHub 免费自取
有时候Github会出现无法进入的情况,在这里我也给大家分享我经营多年的 Android技术交流里面都是我这几年来聚集的一帮Android开发程序员,欢迎大家加入,同时相应的资料也可以找群主领取的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。