7

04-2021

好久没有在博客更新文章了,现在习惯在wiki里面写了,更方便一点,最近正好系统学习了下go,然后域名申请了下https,发现自己确实太懒了,还是不应该放弃自己一直都喜欢写东西的习惯,这两年从技术上,生活上各方面还是有很多值得记录的事情。

学习go的起因主要出于对目前go的火热,当然对于做PHP的我来说,学习一门非解释性语音还是挺有必要的,尤其是好好系统的学一学。不过说真的语言没有好坏,到了我现在的阶段,就能明白语言都是工具,都有起专注和擅长的领域。很多人说PHP没落,其实吧也并不是这样,你水平不行,用什么语言都一样,你水平足够,不是多么牛逼的语言一样可以写出牛逼的东西。我学习go其实也是因为做基于目前公司项目,发现go写个网关服务非常合适、方便,带着这样的目的来学的,学完之后对于原有的水平有挺大的提高。而且发现go确实非常的方便,夸平台,而且编译的是机器码,性能必定相比java这样jit更高。对于phper还是建议学习下,php是个入门简单,但是学习曲线非常陡的原因,很多人只是知其然不知其所以然,对于现在的PHPer,一定要学习了解下swoole,workman,php8的jit,可以开阔眼界,对于想多学一门语言的PHPer,建议学一学go。两者也是挺互补的,也能做PHP扩展,而且入门也挺简单。大部分开发者都是对学习另外一门语言都是有些抵触的。这就好像是离开了自己的舒适区,但是其实,一旦你学进去还是会发现更广阔的天空。

一定明白语言没有好坏,整个系统的架构、设计才是最重要的。PHPer的特性让很多PHPer的水平差异很大,不如Java等有比较完备库,开发者基础。其实一个语言只有足够活跃,就会不断的有牛人贡献各种牛逼的东西。如果你的PHP水平已经可以,做过cli的各种服务、项目。其实就明白语言都一样,无法同样的功能换个语法。后端语言最终都是变为机器码,调用系统底层的接口。你认为PHP做不了什么,其实并不是他真的做不了,只是生态,专注的领益不通,更适合做什么。你如果非要做肯定都可以做的,只是你要考虑的是真正大的项目,需要多少人都要会做,你能找到多少这样的人。

推荐下我学习的资料:https://www.jianshu.com/u/15b2847f117e   这个资料还是挺不错,很多自己的理解,解释在里面。你如果学习的快,一周就差不多。前面基本语法肯定比较枯燥,但是所有语言都是这样的。坚持一下,最好和PHP自己的语言语法结合理解一下。关键的是PHPer一定要觉得这样强类型的语言很别扭,其实php为了实现这个弱类型付出的代价还是挺大的。这里需要自己能够理解下,你只要明白了其实也没啥特别的。另外go是没有强的类的概念的,不是传统的面向对象语言,他通过结构体的接口、导入、大小写,来实现类的定义、继承、私有共有;然后go的一大亮点就是他的协程。写过异步任务的人可以简单理解他的协程就类似异步,就一个go关键字就开启一个协程。非常方便。开销小,理论上资源够可以开很多很多协程,当然你可以自己控制实现一个协程池来管控一下。main就是一个主协程,其他协程,无论是协程里面又开启的协程,其实理论上都从属于main主协程。协程的通讯和控制就依赖于channel通道和context包,而协程的代码一定注意不要有死循环或者无限制等待的阻塞任务,不然除非main退出,子协程是无法退出的,他不像进程这样,你还可以通过kill等命令强制结束,context的控制逻辑其实也是要代码执行到判断逻辑主动退出的,如果之前就阻塞或者死循环,那就无法退出了。这里需要好好理解。你做过多进程或者多线程服务的话就好理解一些。而对于连接池的概念有一定水平的开发者应该就理解。go的连接池和多核使用都非常方便

总的来说我也就学了一个星期,刚开始也觉得真心挺牛逼的,其实吧,一个语言是否真的能牛逼起来还是要看生态,社区是否活跃。用的多了自然就牛逼了。不要太在意很多网上给出的语言性能压测对比,生产环境的业务哪有一个hello Word,别只看结果,你要看他压测的过程。当然纯语言层面,go这样的直接编译成机器码,PHP就算使用opcache或者jit,毕竟还是多了几层。肯定还是有些差距,但是你又发现为什么swoole或者workman 为什么又比go的hello word高了呢。其实很简单这样非阻塞的任务,swoole workman提前启动多个进程利用多核,go的协程是动态的,就算他再轻量也是有起管理的开销,切换的开销的。这样的对比其实意义不是特别大。但是呢,这里有个但是,真的如果你的业务发展到架构优化的成本已经比语言切换的成本高的时候,这个语言的优劣也确实是很重要的。切换个语言可能真的能省下个一半机器都很正常,尤其对于那种成千上万服务器的业务来说,就很重要了。但是,这里又一个但是,往往很多服务的架构都是综合考虑,迭代升级的。你一个初级项目,难道上来就意淫一个上亿用户的架构么。解决任何事情都有方法,任何困难都能解决,而且解决的方法不见得完全就是技术上的,最明显的12306.之前所有的票都是一个开票时间,现在都是高铁,普通车分开,等,这样也是解决方法。放开自己的视野。很多事情解决起来就没那么复杂

程序本天成,妙手偶得之!我们只是代码的搬运工!

转载请注明:http://www.521php.com/archives/2073/

发表评论

昵称:

网址:

eg.博客主题调用的是Gravatar头像,你可以通过邮箱注册获得头像.
/ 快捷键:Ctrl+Enter