打算在这条路上走到黑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
tianzhen
V2EX    程序员

打算在这条路上走到黑

  tianzhen 2015-08-12 18:17:08 +08:00 6288 次点击
这是一个创建于 3769 天前的主题,其中的信息可能已经有所发展或是发生改变。
楼主的情况是这样的,自学编程,由于没有科班背景,一打学习开始便是和动态语言打交道,PHP -> Python -> Ruby -> Javascript,有幸于去年正式上了程序开发这班车,在全职开发的这大半年中,绝大部分时间都在写Javascript(算是狭义的前端开发,因为只写JS,实现web前端逻辑,不需要负责HTML/CSS),我很喜欢写代码,打算在这条路上走到黑 …现在想选择一条倾向于后端开发的路深入学习下去,特来请教各位前辈,提前先谢谢了!我自己做了个简要的可能路径分析:

继续深入钻研JS:

- UP: 当前工作主力语言,能学以致用,相信编程这货光知道不行,必须得实际操作,敲得越多会敲得越好
- DOWN: 虽说JS现在大行其道,前后通吃,但总感觉它不是深钻的理想对象,据说真的node开发高手都是身后C/C++背景的,能看懂node源码实现…不然只能流于表面,且node也并非能适用于任何后端场景,日后换工作局限较大

利用业余时间啃Java:

- UP: Java的学习资料算是最全的了,在coursera上有北大的Java程序设计课程,又或各大培训机构的视频,啥高祺Java 300课,交口称赞马士兵老师的课,此外数据结构、算法、设计模式大部分书也都是基于Java的。而且工作机会也貌似最多
- DOWN: 太罗嗦了,实现点小功能需要一大堆boilerplate代码,而且非常依赖笨重的IDE,让基本上只接触过动态语言的我实在有点受不了…

利用业余时间深入Python:

- UP: 应该是自己最喜欢的语言了,强大到不行,啥都能干,2和3版本问题在我这个水平也不会太困扰我,入2准没错 :D
- DOWN: 说白了还是工作机会比较少,楼主不在北上广,本地用Python的都是很小的公司…
第 1 条附言    2015-08-12 19:48:33 +08:00
楼主不是想死守一门语言哈,只是想确定一门最为趁手的,通了一门,再多接触其他的是我的计划,现在的我虽然能开展工作但属于是 stackoverflow driven开发者...好多都要Google
第 2 条附言    2015-08-12 22:44:37 +08:00
多想无益多学无害,楼主打算先开始撸Java了
46 条回复    2015-08-15 20:09:19 +08:00
muyege
    1
muyege  
   2015-08-12 18:21:21 +08:00
只有C能让你走到黑,回答完毕
laoyur
    2
laoyur  
   2015-08-12 18:23:09 +08:00
感觉楼主头像中间的→箭头跟标题好应景
kongkongyzt
    3
kongkongyzt  
   2015-08-12 18:31:50 +08:00   1
do what you love
blacktulip
    4
blacktulip  
   2015-08-12 18:33:50 +08:00   1
> 现在想选择一条倾向于后端开发的路深入学习下去
不要啦,后端现在趋势都是 BaaS 了,还是前端需求旺盛。不过要是楼主你喜欢,还是深钻 JS 吧。
编译语言还是学一门傍身为佳,Java 也是不错的选择,还可以考虑一下 Go 。
Python 建议就算了,实在喜欢的话业余耍耍吧。
Librazy
    5
Librazy  
   2015-08-12 18:38:28 +08:00
投奔MS怀抱,和我一起迎接C#的大太阳吧!
echo1937
    6
echo1937  
   2015-08-12 18:38:50 +08:00   1
如果你不打算离开现在的工作地方,那么研究语言的前景不如研究本地的市场。
JamesRuan
    7
JamesRuan  
   2015-08-12 18:43:33 +08:00   1
Java是喊了那么多年该死还没死的,C++也是。

我觉得吧,学语言就要学以致用。学Java的目的就是混饭吃,真要写出“理想”的程序,Java绝对不是个好选择。

学node.js(就业机会也不算少哦),然后去看看Erlang,你会发现还有这样一个世界。然后可以去学Go,看看现代的最人性化的后端语言(C#会表示不服,呵呵)到底有多强(当然,学了Erlang后,对Go也的看法就不太一样了)。

Python、Ruby这类做胶水还行,真要跑后端业务,还存在一定的问题(当然也看具体业务啊,跑个论坛什么的就没压力啦),用来构建大系统还是比较弱(主要是你很难遇到强的团队,语言天生就门槛低)。
quericy
    8
quericy  
   2015-08-12 18:44:47 +08:00
@Librazy C#的大太阳233333为啥这么有画面感
zog
    9
zog  
   2015-08-12 18:50:28 +08:00   1
语言只是个工具。选择语言都是选择语言背后的框架、库、支持的公司,对于开发人员是否友好,开发的速度能否赶上项目要求。兄弟你还得修炼呀,不要在语言选择上花精力。
JamesRuan
    10
JamesRuan  
   2015-08-12 18:53:05 +08:00   1
只考虑工作的话,最好不要从码农角度考虑,而要从CTO角度去考虑。

语言的入门门槛,工程化程度,构建大系统的能力,维护难度,配置、部署的方便程度,跨平台性,业务转变后的灵活性,性能,代码可读性……

Java没死是有道理的:入门门槛低,工程化程度高,构建大系统的能力高,维护难度中等,配置、部署麻烦,跨平台性存在(虽然这是一个笑话),业务灵活性低,性能高,代码可读性中等。Java的缺点转嫁给一堆叫测试、运维的去处理了,创造了新的职业。但它的优点却非常有竞争力。
zog
    11
zog  
   2015-08-12 18:53:31 +08:00   1
补充一下,你平时工作中js用的多。你就沿着这路走走看看。玩玩npm里面那么多的库。研究研究前端构建流程,看看比较新的react和flux如何构建应用。都是非常好的方向。
ETiV
    12
ETiV  
   2015-08-12 18:56:12 +08:00   1
我觉得基础还是先打好.
在这基础上, 啥语言都不是问题.

编程工作很简单, 都是一些 加减乘除/循环/分支 这些.
有区别的就是写起来的语法不太一样. 学习新语言主要就是学习这个. 再就是各种模式, 面向过程/面向对象/事件驱动/函数式编程...

所以编程语言学起来很快的.

再加上一些成熟的"设计模式", 绝大多数特定方向的问题都有前人已经总结好的经验, 照猫画虎, 即可开展快速开发.
tianzhen
    13
tianzhen  
OP
   2015-08-12 19:07:30 +08:00
@zog
@ETiV

谢谢大家!嗯,我也知道语言只是开发环节中的一环而已,不用太过于纠结,但我听说作为优秀的开发者应该有一门语言是精通的,所以我希望选择一门来深入学习 :)
tianzhen
    14
tianzhen  
OP
   2015-08-12 19:10:33 +08:00
@zog 我其实也挺喜欢JS的,但不是很中意前端方向,那个领域实在发展太快了...
1024cool
    15
1024cool  
   2015-08-12 19:16:01 +08:00
抱住一门语言啃是没有前途的,骚年!
JamesRuan
    16
JamesRuan  
   2015-08-12 19:19:07 +08:00 via Android
@tianzhen 前端是在不断地造轮子,并非是发展快,而是发展水平落后于其他领域。这些轮子其实是显而易见的,我自己就差点造了个hexo出来。
JamesRuan
    17
JamesRuan  
   2015-08-12 19:23:21 +08:00 via Android   1
我觉得核心竞争力应该在于领域视野,工程协作能力和抽象能力。其他的一切都是工具(工具背后的思想却是值得学习的领域视野)。
imn1
    18
imn1  
   2015-08-12 19:31:51 +08:00   1
边学边做的话,还是选你有工作可做的那种语言优先
JamesRuan
    19
JamesRuan  
   2015-08-12 19:31:56 +08:00 via Android   1
比如说你写前端业务,就可以想想是不是业务非如此抽象不可?RPC的抽象和REST的抽象的不同,传统MVC和React,用后端模式写前端的asm.js。这些其实无非是其他领域已经有的抽象在前端开的花而已。你有那些抽象能力,有前端领域视野,自然也会像要这样那样的工具的。
tianzhen
    20
tianzhen  
OP
   2015-08-12 19:45:29 +08:00 via iPhone
@1024cool 嗯嗯,肯定不会的哈,只是想确定一门最为趁手的,通了一门,再多接触其他的是我的计划
exuxu
    21
exuxu  
   2015-08-12 22:00:52 +08:00
如果按照作者的路线走的话,看来过一段时间我要学Javascript了
lequiet
    22
lequiet  
   2015-08-12 23:14:10 +08:00 via iPhone   1
可以学学Java,以弥补你在强类型语言的不足。作为后端语言,Java还是很稳妥的/健壮的,至于觉得比较嗦,那只是写小功能会有这种感觉,做大了,面向对象和复用做好了,就知道Java的可靠性了。至于Python,很简单的语法,也不需要太深入学,偶尔有点小想法的可以拿来快速实现一下, Python3更推荐,如果是自己用的话。
lequiet
    23
lequiet  
   2015-08-12 23:16:08 +08:00 via iPhone
@lequiet 当然,Java学归学,用起来才是王道。
tianzhen
    24
tianzhen  
OP
   2015-08-13 07:10:02 +08:00 via iPhone
@lequiet 谢谢!我也觉得应该学习下强类型语言补充下 :)
bugeye
    25
bugeye  
   2015-08-13 08:26:20 +08:00
非科班出身不应该先把 离散数学、数据结构、编译原理、计算机组成原理 这些基础学好吗?
尤其是准备在coding上面走到黑的。
ren2881971
    26
ren2881971  
   2015-08-13 10:36:26 +08:00
@bugeye 等学完这些课程 早饿死了。 来点实际的吧 不可否认这些课程的重要性。但更不能脱离实际!尤其是非科班的!
notcome
    27
notcome  
   2015-08-13 10:58:46 +08:00 via iPhone
一、忘记语言只是工具这种话。
二、学习 Haskell。
Rand01ph
    28
Rand01ph  
   2015-08-13 11:09:56 +08:00
最近也想捡一门强类型编译语言好好学学,犹豫Java和CPP。
Rand01ph
    29
Rand01ph  
   2015-08-13 11:11:36 +08:00
目前接触的有PHP,Python,Node.js,Lua这几样,可能这下半年会学习Switf撸一个APP出来,目前在用PyQt实现一个gui,这么看来可能学习CPP会是一个平滑的选择。
karlakte
    30
karlakte  
   2015-08-13 11:30:12 +08:00
@Librazy 长点心吧 大兄弟 逗逼巨硬专坑C#
tianzhen
    31
tianzhen  
OP
   2015-08-13 11:55:02 +08:00
@bugeye 嗯嗯,知道这些也很重要,但就我现在水平来说那些太难了,我的计划是先成为一名熟练的程序员,然后把你说的这些作为长远慢慢攻克的目标
bugeye
    32
bugeye  
   2015-08-13 12:12:34 +08:00
@ren2881971 他已经有工作了,又不是还在找工作。对于想走到黑的人来说,跳过这些以后更浪费时间。我不知道码农能做到几岁。

更何况数据结构是非常多工作的敲门砖。
anubiskong
    33
anubiskong  
   2015-08-13 12:37:47 +08:00
学Java? 自找苦吃
tianzhen
    34
tianzhen  
OP
   2015-08-13 12:56:02 +08:00 via iPhone
@bugeye 嗯嗯,数据结构是肯定要学习的,等我把java se基础部分学了就开始学数据结构,有很多数据结构java实现的学习材料,包括算法,应该工作中用不上java所以不急学应用譬如j2ee部分的东西,学了也记不住,就通过java来打其他的基础 :)
chinajik
    35
chinajik  
   2015-08-13 14:17:04 +08:00
我当年也是你们这想的, 至少大学的时候也跟着一群人喷 java....
@tianzhen 但是, 我工作是用 java 的, 当系统足够复杂的时候,这个语言在构建大型系统上有不可替代的优势...尤其是当技术水平不一,有需要保证系统健壮可维护.. 动态语言这方面简直是灾难
JamesRuan
    36
JamesRuan  
   2015-08-13 14:47:28 +08:00   1
@bugeye 还是学操作系统、数据库、计算机网络等对工作更加重要吧!这些工程方面课,跳过所有基础课去学完全没有问题,却对实际工作最有帮助。

那些基础课,什么时候学都不迟的(用来刷新世界观用的)。而操作系统、数据库、计算机网络这类确实越早学越受益。

提到基础课的话,还要补一个概率论,所有工科的都应该去学。
moro
    37
moro  
   2015-08-13 14:53:19 +08:00
@JamesRuan 基础打好,语言都是一通百通,都是用来解决问题的,不要被表象所困惑。
robertlyc
    38
robertlyc  
   2015-08-13 15:30:57 +08:00   1
噗 我发现 有些人就喜欢一本正经的胡说八道 然后还享受被小白膜拜的感觉
limuxy
    39
limuxy  
   2015-08-13 15:54:06 +08:00
UP & DOWN 应该说成PROS & CONS (对不起歪楼了
publicID321
    40
publicID321  
   2015-08-13 16:02:09 +08:00
数据库 or ABAP
iminto
    41
iminto  
   2015-08-13 16:16:17 +08:00
你需要学Java,学学工程语言,而不是随便写写的脚本
bk201
    42
bk201  
   2015-08-13 16:20:13 +08:00
爱好是最好的老师,走到黑说明你还不爱她,对她没信心
jukka
    43
jukka  
   2015-08-14 08:24:53 +08:00 via iPhone
1,用简单的语言做简单的事情。
2,使用C + Lua。
500miles
    44
500miles  
   2015-08-14 12:57:24 +08:00
楼主看完所有回答 . 更加迷茫了......

最终决定把这个问题交给上帝来抉择 : 最终选择了Javascript .

----- 任何能用Javascript实现的应用,终将会用Javascript实现
Librazy
    45
Librazy  
   2015-08-14 21:40:01 +08:00
@karlakte 坑太大爬不出去了
JamesRuan
    46
JamesRuan  
   2015-08-15 20:09:19 +08:00
@Librazy 从放弃使用IDE开始,哈哈!
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     885 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 24ms UTC 19:59 PVG 03:59 LAX 11:59 JFK 14:59
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86