说一下我的学习历程

从 ES5 学到 ES6,后来越来越不满足前端的限制,想学习伺服器相关的知识,就学习了 node,伺服器相关的知识最基础的伺服器搭建提供HTTP服务开始。不同于前端开发,Vue React 提供了一套完整的业务架构,你照著往里填就是了。node 的后台开发最早的 express koa。它们提供的只是基础的HTTP应答。没有完整后端业务架构。所以我去学习了 java 开发。SSM,明白了 controller service dao 层的作用。这个很重要,在我后来写后端服务都是沿用这个模型

当然我并没有深入学习 JAVA,只是跑了基本的服务,主要学习的概念。没有深入的原因是我觉得即使我不学前端了,深入 JAVA 10年我可能也进不了集团或者说得到晋升

掌握后台开发的常识,以及 mysql redis 等相关资料库的使用后,我继续投入到了 node 的学习。因为 ES 本身没有类型,在编写后台服务时极其不方便容易出错我又学习了 typescript,并且前后端统一了。在这个过程中我并没有再执著于语言的学习,而是注重了解 web开发中的各个理念,CAP,SSO,OAUTH,MQ等等。这个阶段语言是不重要的。

直到我遇到了 go

这个语言年轻,2009年出生。性能足够强大,随手写一个伺服器就是高性能伺服器,node 超冒烟都追不上。而且语法简单。虽然和传统的 OOP 思路不一样,但是对于前端而且是写 TS 的特别容易上手。

node 的 JS 是单线程模型让我没有继续深入的另一个原因。cluster 是多进程模型,即使 v10 出现的 worker,我觉得也只是简化了的开启多进程的方法。单线程意味著没有锁,不用处理许多死锁问题,这是一个 node 的优点。但对于我个人来说,没有锁让我的编程生涯暗淡无光(抖M?)。单线程也意味著只能使用回调的形式(没人会在 web 编程中使用 readFileSync ),虽然 async await 使得非同步编程类似同步,但是真的写多了还是觉得不够纯粹。脑子里还是会一直在同步与非同步之间切换

go 刚好满足了我想要的一门语言优点 语法简单 多线程(协程) 强类型。在不是很熟悉的情况下使用 go 完成一个 CRUD 应用花了一个周末。iris + gorm。前者是类似 KOA 的 WEB 框架,后者是资料库映射工具。敲业务代码实现起来特别简单,没考虑过死锁的问题,因为框架层面就帮你解决了。而且全部是同步代码,不用再去 await 了

目前比较坑爹的是 go 的包管理(modules 现在还因为 golang 下的库安装不了产生问题)不够好。以及各种开源库存在不靠谱的情况。可能用著用著就 panic 了。不过随著 go2 的出来,有了泛型以及新的错误处理机制,go 的库也会越来越完善

在学习 node 的时候我对自己的要求是熟练掌握各种非同步模型,各种 Promise async,各种池链接要求自己能随便写。go 我对自己的要求就是熟练并发模型,熟练锁以及 channel 的各种操作,目前主要的心思也是花在这上面。

个人觉得 go 是未来。在 web 开发领域也会逐步提升份额。现在大部分是用 go 做中间件开发,但是也有大厂用来做 crud 业务了。将来不送外卖了,可能我会试试去做 go 的后台开发


前端为主的话,node其实就可以了,如果再选的话,我选择python3。

但是不要投入太多精力,了解一门面向对象语言其实对自己编程思维,能力提高是有很大帮助的。但是不要影响到主力工具的投入。

入门推荐,廖雪峰老师的python教程。


谢邀。

限定条件:如题,Python or PHP。

看自己的方向,不用抱著找到「十全大补」的完美心态。如果仍是 Web 应用方向,建议 PHP ,PHP 在 Web 方面比 Python 有优势。如果是通用型编程,GUI、数据分析、图像处理啥都想搞,那么 Python 有优势。


别问学什么后端语言,问就是Java

类似的问题几年前我已经提问过了。有兴趣的自己的找找。

那么现在我可以明确的告诉你,Java是最好的选择。

虽然我当初一直很讨厌Java,觉得他啰嗦土鳖,但是不得不承认Java整个应用领域,工业积累摆在那里,只要是做web开发,无论如何都是绕不过他的。

我曾经也尝试过接触Python、php、RoR,他们价值也不低,但是应用领域真的比Java差远了。我在杭州找工作,基本上90%的公司都是Java技术栈的,这使得你很容易接触到具体的东西给到你学习的反馈。虽然我现在在公司主要写前端,但后端的东西,写个SQL做个介面做CRUD还是很简单的。

另外吧,私下里也不得不承认,前端社区的很多东西,都是从Java社区抄过来的。比如说Angular、TypeScript这些,从设计模式、架构、编码、构建等等,如果你搞过Spring,学这些简直不要太简单。这些东西,不是说其他社区语言里没有,而是Java太成功了,导致这一套方式成一套标准。

几年前我也想好好深入的学node,但是你能找到node教程,基本都是helloworld级别的。真想搞后端开发,node还是靠不住的。那时候经常会感叹,node少一个像Spring这样的成熟解决方案,或者一个node版的wordpress,总之是一个值得深入耕耘的node服务端领地。eggjs算不错了,那文档,基本上是我看过的最好的node服务端开发教程了。但是你想搞点大项目,还是不够用。连个像样点的ORM框架都没得。基本上搞到这里,没有其他后端开发经验的jser就嗝屁了。你想继续深入,那就得沿袭Spring** 那条路搞下去了。

至于其他的

推荐C、go什么的不用理,基本和前端没什么关系,和后端的关系也不大,你会发现大家聊天的语境都不一样;至于Python,Python能做的一半用node做的只好不差,另一半和后端也什么关系,搞得是另一个行当的事情;PHP其实也还可以,是想像中的后端的那种样式,但是有了es6,有了Typescript之后,口胃也变挑了,PHP从头到脚都不太看得上。

这就是我这几年学习后端的一些感想吧。


伺服器端编程语言,比较稳妥的选择是,企业级开发推荐Java,互联网开发推荐PHP。


推荐阅读:
相关文章