在 v2 里面泡的久了,经常能在许多帖子下面看到有人说“转语言非常容易”,Go 语言能半天入门 、Java 太简单了之类的回复。
但是在我看来事情却没那么容易,换一门语言就意味着框架、最佳实践、对接第三方开发等都要重来一遍。自从 4 个月之前从 Java 转到 go ,过程中经历了许多“痛苦”,慢慢的我发现转一门语言没有那么容易,学了四个月都不敢说自己已经掌握 go 开发,越学到后面发现自己不会的也越多,同时 Java 的语法也忘了一些。
1
fgodt 2023-11-03 13:41:58 +08:00 2
工作中 用过 c 、c++、java 、go 、oc 、js ,我感觉不是很难
|
2
z7356995 2023-11-03 13:44:06 +08:00 via Android
借助 chatgpt 呀,有一点编程基础就可以了引导 gpt 给你写代码了
|
3
cdwyd 2023-11-03 13:44:36 +08:00 via Android 24
有些人表面是换了个语言实际上只是换了个语法而已
每次看到 java 味的 python 和 php 代码就头大 |
4
guoooo00oohao 2023-11-03 13:46:01 +08:00 3
用一个语言完成工作, 和完全掌握理解一个语言我感觉还是有很大不同.
如果转语言完成工作, 我感觉如果都是强类型语言之间甚至都不需要学习,立马就可以开始写.就是慢一点,写起来不地道. |
5
witcat 2023-11-03 13:49:31 +08:00 2
程序员也是有“原生语言”的,半天写个"hello world"可以,入门没可能。
|
6
kaiveyoung 2023-11-03 13:49:49 +08:00 via Android
工作语言 C ,C++,Python ,go ,php ,vue ,shell ,lua ,个人感觉,不难
|
7
BlackEagles 2023-11-03 13:49:59 +08:00
转个语法那都不叫啥
看看后端转前端、前端转 APP 、APP 转后端看看要多久熟练起来 |
8
jasonchen168 2023-11-03 13:51:45 +08:00
转语言写业务代码不难,难的是你真正掌握一门语言
|
9
sentinelK 2023-11-03 13:53:22 +08:00 1
关键要给“转语言”下一个定义。
是可以通过其他语法实现相同逻辑,叫转语言。 还是利用本语言的最佳实践完成需求,叫转语言。 前者很容易。 后者不算太容易,但有其他语言的基础,难度也不大。毕竟人的经验是可以参照、对照、映射、反推的。每个语言也只是在其特色上的区别。 但换而言之,如果“转语言”的环境变化过大,甚至是跨工种(后端<=>前端<=>统计)的,我觉得这个“转”字就不成立了。 |
10
ewBuyVmLZMZE 2023-11-03 13:53:23 +08:00 1
还好吧,编程语言上的语法相似性挺多的,接触的语言越多越能感受到很多东西是相通的。其实 Go 和 Java 可能相对割裂大一点,你 Java 转到 Kotlin 和 Scala 就很容易。有 C 的经验转 Go 也很容易。关键点在于你使用的语言少,多接触点就发现不难了。
另,Go 语言的语法看似简单,但是细节还挺多的,比如 Go 里面的赋值就没有那么简单。但是 Go 语言最难的,还是那个大道至简的思想,很难组织好代码结构,但是无脑写就很爽。 |
11
meiguozhiguang 2023-11-03 13:55:32 +08:00 1
转语言在于心态,宽松的环境,放松自信的心态,客服困难写几个小项目,基本就过了阵痛期,然后就一马平川了。
|
12
dobelee 2023-11-03 13:57:40 +08:00
Go 总是能看到很 java 和很 php 的写法,我也不知道他们算不算转了。
|
13
meiguozhiguang 2023-11-03 13:59:50 +08:00
想起来 很早年间 .net 转 php ,是在一个非常紧张的项目里迅速转,非常难受,压力大心态不好,没有正确的学习方法,就是硬写, 真正有了感觉还是换了工作静下心,理解体会,知识能力迅速就上来了。
|
14
8355 2023-11-03 14:00:19 +08:00
当工作年限到达 8 年以上,设计过一定规模数据量的业务解决方案,其实语言和语言之间的区别不会特别大,不要想着每次一上来就最佳实践,你先保证按照同一种最简单的模式可以实现功能,之后优化学习,现在通过 gpt 学习达到高级开发的水平还是很简单的,再通过学习别人的代码进行方案优化可以逐步接近最佳实践。
|
15
Reficul 2023-11-03 14:01:14 +08:00 3
写出来可以,写的 native 难。每个语言有自己的风格偏好,你的母语决定了你的思维方式,参考《降临》。
|
16
dongisking 2023-11-03 14:01:40 +08:00 1
公司内部转语言不难,无非是刚转时候 curd 慢一点。但是没有项目经验直接去面试,得被吊打
|
17
coderluan 2023-11-03 14:01:48 +08:00
现在 IDE 这么智能,还有 GPT 帮你,学个语法真心不难,但是剩下的主要看两名语言的生态一样不一样。
|
18
version 2023-11-03 14:02:02 +08:00
换语音是很容易..难点是换语言里还能找到 相同工资的岗位么..工作经历都写花
说白了.你可以懂.但是不能当饭吃..除非你是 技术部门架构师 |
19
thinkm 2023-11-03 14:04:14 +08:00
是的
|
20
AoEiuV020JP 2023-11-03 14:07:55 +08:00
我感觉“换语言”和“换技术栈”是两码事,前者简单,后者困难,
但问题是换语言经常就需要换技术栈,可总有人考虑换语言难度就只考虑语言本身, |
21
dreamingclj 2023-11-03 14:13:15 +08:00
|
22
yousabuk 2023-11-03 14:18:11 +08:00 via iPhone 1
要是学 C 而且学好了,个人觉得转其他语言比较快。
就像学会了九阳神功学其他什么武功都快。 目前常用 C, Java, LabVIEW, Vue ,混合开发,感觉也还写的不赖。 C:主要写底层 Java:主要写和数据处理的,TCP/IP ,数据库等 LavVIEW:主要用来工控方面的 Vue:就是 web 前端了(嵌入式设备或服务配置页面) |
23
yousabuk 2023-11-03 14:20:16 +08:00 via iPhone
多语言混合开发,定位 OK 符合自身工作需求,还是比较轻松的。
|
24
tangtang369 2023-11-03 14:39:11 +08:00
工作中日常实用 c++ python Go
了解一定规则后其实无所谓语言的,会一种则会 n 种 |
25
yazinnnn0 2023-11-03 14:41:57 +08:00 1
从 java 糊业务变成 go 糊业务有啥难的
如果换赛道的话那当然难了 |
26
NoNewWorld 2023-11-03 14:43:01 +08:00
转语言不难,难的是转风格,我工作 java ,但是日常会写 c++等其他的,现在写其他也一股 Java 味
|
27
dilu 2023-11-03 14:57:06 +08:00
写业务代码不觉得有多难,我转 Go 一周左右简单业务 curd 一点问题都没有了。别的语言不太确定。
|
28
henix 2023-11-03 15:01:03 +08:00 1
我觉得编程语言之间还是有很多共性的,如果你见得多了,多思考,我认为转语言不难。
例如 Java, Python, js 都有迭代器( iterator )概念,Python 和 js 都有生成器( Generator )概念。Java 和 Python 都是面向对象,但 js 就不是,而是基于原型( Prototype-based )的,另一个基于原型的语言是 Lua 。而 Go 就更不面向对象,Go 的抽象方法是 interface ,是基于胖指针( fat pointer )的,另一个与之类似的是 Rust 的 trait 。 有些语言是静态类型,还有些语言是动态类型。你会发现静态类型语言有一些相似的处理方法,比如 Go 中 json 转换是声明一个类型然后用 tag 标注字段名,而 Java 的 gson 也可以用注解来标注字段名。而动态语言的 json 转换就完全不同。 推荐在你现在的基础之上再学习一门动态语言,例如 js 或 Python ,有了更多实际经验就能思考语言之间的共性和个性。 |
29
tairan2006 2023-11-03 15:12:12 +08:00
我学过的,大部分很容易,除了 Haskell 和 Rust
|
30
dacapoday 2023-11-03 15:12:28 +08:00
学精一门,一通百通,而且市面上的工程语言几乎都是 C 家族的,学好 C 语言,最好是 C/C++,那 Golang ,Java, 这些有如简化了的 C/C++ 手到擒来。Python 更是无师自通。js 如果掌握了原型链和历史包袱相关的怪癖,也不难。
但如果是转非 C (比如 lisp 家族),clojure 和 prolog 这些比较难了。 |
31
alfa 2023-11-03 15:15:34 +08:00
有实际业务,挺容易转的,我 3 年前 iOS 转 Java ,没什么压力。就是现在再看自己写的第一个 Java 项目有点不忍直视。
|
32
houshuu 2023-11-03 15:16:18 +08:00 2
平常工作中由于前后端和数据模型都有涉及到, C++, Go, Java, Kotlin, React, Python 这些都是日常使用. Rust, Lua, C#自己做副业会用. 应该算比较多语言的程序员.
学生时代随波逐流各种学, 为了刷题学 C++, 觉得前端很酷炫学了 Vue, 想做 App 学了 Swift, 研究后来去了机器学习方向就用了 Python 和 R, 倒是工作后其实没怎么学新的语言了. 个人体会就是语言学的越多, 新语言就学的越快. 原因很简单, 大部分语言都是互相抄, 缝合的比例不大一样罢了. 楼上有说九阳神功类的语言, 一通百通, 我这里重推 C++, Haskell, React. 写的不赖其实很多人都可以, 但是某个语言精通其实还是很困难的. 因为我们大部分情况对于一个人精通某个语言的感觉往往代表的不是对敲代码的掌握, 而是对这个语言相关工具链和设计上的了解. 比如看报错快速定位, 大概扫一眼代码直接就能感觉到 Bug 在哪里. 或者哪些坑是非常常见的, 哪些写法是容易产生 bug 的. 有时候这个水平甚至还和这个语言生态中用的多的框架强关联, 比如 Java 和 Spring. 就和打游戏一样的, 可以玩一堆 fps 游戏, 都打的挺准, 但是守望先锋玩的好和 cs, pubg 打得好肯定有挺多游戏理解上的不同的. |
34
iyaozhen 2023-11-03 15:36:42 +08:00
语法很容易
但很多最佳实践需要费点功夫。当然你要写啥都 java 味,也简单 |
35
pkoukk 2023-11-03 15:39:36 +08:00
语言虽多,但其实也就几个 “族”
c,c++,go 写起来非常像 java,c#,TypeScript ,写起来也很像 python 就不说了,究极融合怪,你用的语言的特性,或多或少它都有 |
36
Leonard 2023-11-03 15:42:24 +08:00 via iPhone
比新手入门容易,但肯定不是说换就换,语法换起来简单,特性、生态都要重新适应
|
37
ChoateYao 2023-11-03 15:45:58 +08:00
1 个月能上手,1 个月改造成自己的编程习惯框架,最重要的是先写起来,这样才有解决问题场景,才能进步
|
38
clue 2023-11-03 15:47:28 +08:00
有的语言间的差异非常大,比如 clojure 这种纯函数式的语言,我是不信能随便转过来的
不过同类语言转起来还是挺快的 但能写和写好差距可就大了,同样是 js ,有的人整天写屎山,有的人写出了 vscode 、typescript |
39
lmq2582609 2023-11-03 15:48:21 +08:00
可能每个人理解难和简单的程度不一样,如果能写出一些小 demo 就算掌握了一门语言,那这也太好掌握了,谁上谁都行啊。
|
40
getzhujie123 2023-11-03 15:50:12 +08:00
入门都不难,要做到精通就有点难了
|
41
jiayouzl 2023-11-03 15:51:34 +08:00
我 PHP,node,java,Python,go,C#需要什么就用什么,甚至易语言也是拿来即用.
|
42
ihciah 2023-11-03 15:54:42 +08:00
不同语言还是有自己的思维模式的,相似模式的很容易切换。我写过 py/go/cpp/rust ,但就是写不来 js/java 。
|
43
superkeke 2023-11-03 16:09:54 +08:00
C/C++ ,Objective-C ,Swift ,Javascript ,Java ,Kotlin ,Dart ,语言快,特性和生态要时间
|
44
cambria 2023-11-03 16:09:59 +08:00
掌握基本语法:容易
理解语言特性:一般 熟悉语言生态:困难 精通语言内核:想屁吃 还有个前提是有计算机基础知识和底层开发语言( C/C++一类的)开发经验 |
45
coolair 2023-11-03 16:13:25 +08:00 2
那些说容易的都是写的屎山,只是用不同的语言模仿熟悉的语言去实现业务而已。
|
46
getzhujie123 2023-11-03 16:15:21 +08:00
不管是 PHP ,java 还是其他语言,只要能做到一门语言真正精通,再学其他语言都能触类旁通,自然能学的很快把
|
47
liujavamail 2023-11-03 16:17:54 +08:00
我看那些教学课程里,go 语言的视频教程, 凡是讲师直播手写协程的, 没有一个能很顺畅的就写对的, 调试有的都调试了一个小时才发现问题, 还是看起来很牛的讲师
|
48
ShadowPower 2023-11-03 16:36:24 +08:00
我个人的经历:
从完全没摸过任何苹果设备,到会做 iOS 开发(用 Objective-C 和 UIKit ,能边查文档边按要求实现功能),共花了 3 天。 那时候是 iOS7 ~ iOS9 时代。 第一天就差不多把 iOS 开发需要掌握的知识搞清楚了,里面涉及到的东西: MVC 模式:提前学会了…… Objective-C:其实 3 天都在学这个,在此之前已经写过了 Java 、C#( Unity 的)、C++、Python 。 语法其实不需要刻意记忆,看着现成的代码来写,遇到不会的再查询就好了。 只有这些东西花了我一点点时间: @property 、代码块对象、ARC UIKit:我感觉它基本上是仿造 Java Swing 或者 Qt Widgets 来设计的,之前做别的项目的经验也能适用。所以我只记了一些对应关系,比如 QWidget 对应 UIView…… 之后就是找一些类似于 awesome-xxx 之类的项目看看有哪些现成的库可以用,比如 AFNetworking 、Masonry 。 做项目的过程中慢慢掌握其他东西,现学现用。 PS:没有看过 iOS 开发教程/图书 |
49
yangzzz 2023-11-03 17:00:44 +08:00
我认为只要基础语法上手了,多些一些项目就已经可以算是入门了。因为 GO 的语法都比较简单,所以很多人认为 GO 很简单吧。
|
50
thetbw 2023-11-03 17:05:29 +08:00 1
主要是好多库,思路都变了,写代码没那么流畅了,还要找一些该用哪些库
|
52
duluosheng 2023-11-03 17:49:08 +08:00
多搞几个练手的项目,就差不多入门了。精通需要时间,入门没那么难。
|
53
yh7gdiaYW 2023-11-03 17:51:27 +08:00
工作几年后,如果一直持续学习的话,按项目需求换语言换数据库都不是个事儿,上手很快的
|
54
darkengine 2023-11-03 17:59:09 +08:00
跟人类的语言一样,具体要看你“转”到什么程度,是可以到餐厅点餐的级别,还是可以跟人 battle 的级别。
|
56
kujio 2023-11-03 18:13:01 +08:00
基础的东西都差不多,你会的语言越多,新学一门语言就越容易,很多基础的类/结构体,方法/函数,常用操作,常见设计你都不用看文档就能大概猜到怎么用.
难点在于技术栈,不同的技术栈想要做到熟悉至少需要一两年的工作经验 |
57
xuhuanzy 2023-11-03 19:03:57 +08:00 via Android
基础的简单,但深入很难,浮于表面的小 demo 谁都能一天搓出。
|
58
aloxaf 2023-11-03 19:28:56 +08:00
能实现功能是一方面,能用 idiomatic 的方式实现是另一方面
|
59
kakki 2023-11-03 21:06:03 +08:00
cpp ,haskell 学的好换其他的不都是降维打击么。。。
|
60
iorilu 2023-11-03 22:11:55 +08:00
@HFX3389 很简单, 你看一些套了几层得什么继承, 一大堆得 class, 什么 get_xxx, Service 之类得词到处飞
肯定就是 java 风格 |
61
volvo007 2023-11-03 22:44:13 +08:00
@liujavamail 看了好几个教程同感…… 感觉这些讲师对 go 的协程也没有达到融会贯通的程度,所以出错了排错要很久。另一个极端是,我遇到一位讲师从 g 家出来,一看就是 go 老手了,各种信手拈来,但是对于初学者有点过于随心所遇,“亿点点细节”我们跟不上啊😅
|
62
mythabc 2023-11-03 22:47:57 +08:00
仅就业务开发而言,在熟练掌握一门语言后,其他的语言可以一边用一边问 ChatGPT ,比啃厚书/文档的效率高很多
|
63
Ericcccccccc 2023-11-04 01:02:26 +08:00
你写业务代码, 基本上几天就学会了.
业务代码都是这样的: 你从 A 处获取数据(无论是数据库, 缓存还是 RPC, 直接抄现成的写法就行), 加工一下, 一般就是 list, map, set 几个简单的结构用一用就搞定, 返回给 B |
64
icy37785 2023-11-04 02:04:41 +08:00 via iPhone
我在工作中前前后后写过十几种语言的代码,大多数开始写之前都没碰过,打开手册就开始写业务,写出来也都能跑,你问我转语言写一段能跑的代码交付难不难,那是不难的。
但是你问很好的掌握一门新语言难不难,想融入一门新语言让自己看起来像本地人那还是需要很多时间的。 |
65
Imindzzz 2023-11-04 07:44:57 +08:00 via Android
语言的语法只占软件工程的少部分。
Java 后端转 Go 后端一天就行了,转 Android 起码一个月吧? |
66
chesha1 2023-11-04 09:54:20 +08:00
转语言,至少原来你能用语言 A 做到的事,也要能用语言 B 做到吧?
比如你原来能用语言 A 在 leetcode 上顺畅刷题,转了之后也能用新语言刷,不会有数据结构不会写 原来能用语言 A 找到工作,熟悉关于语言 A 的八股,转了之后,也能用语言 B 找到工作,熟悉关于语言 B 的八股 不然算什么转语言?充其量算是在学会语言 A 基础上,学了一点语言 B |
67
keymao 2023-11-04 10:44:06 +08:00
高级语言只是语法和特性不同罢了,本质上一些涉及到基本逻辑处理的地方都是类似的,只不过写法或叫法不一样。
至于什么最佳实践之类的,都是深入了解到语言自己独特的一些功能和特性后重新组织和构建自己现有业务逻辑的一种说法罢了。 你用来构建软件,不算很难。 但是如果想要优化软件性能,你就得对这门语言有相当的了解才行。 浅的需要了解语言最新的特性和功能,深得需要了解对应的语言的虚拟机、解释器甚至是编译器等等。 |
68
docxs 2023-11-04 11:06:39 +08:00 via iPhone
说简单的,只是用语言写写 if else ,涉及到调优,这个得了解整个语言生态,这是有学习成本的,有哪些工具,如何分析,这个对新手不是那么容易的
|
69
threebr 2023-11-04 11:31:29 +08:00
又不是不能用,能实现需求就行了。什么时候各位程序员能意识到代码不是产品,代码运行的结果才是产品
|
70
danhahaha 2023-11-04 11:31:51 +08:00
一般人转语言不得先用一周查这种语言的各种优缺点,然后再用一周在论坛与人辩论,再用 2 天搭个环境,再摸鱼半天,半天打个 hello world ,感觉不过如此,再花 2 天与人论坛辩论,再过大概半年有个该语言的相关项目,一拍脑门,这语言我学过呀,然后一周连学带做项目,学会了,转语言成功
|
71
Evovil 2023-11-04 14:51:43 +08:00
有了 chatgpt 后转语言难度直线下跌。
不管是 c++还是 rust ,不懂就看看源码 多写,多趟几个坑,就熟悉了。 前提还是基本功打好。 |
72
zhaohua 2023-11-04 15:54:17 +08:00
我的历程是 c#->javascript(nodejs)->golang->java. 当然前后快 10 年了.
|
73
nodejsexpress 2023-11-04 19:47:29 +08:00
拿一段 C 的代码换成 python ,或者那一段 go 的代码换成 python ,nodejs 等等不难。
难得是让你重新开始用一门新语言写一个新项目,而这个项目在原来语言上是没有的。 |
74
ivvei 2023-11-05 01:23:32 +08:00
@nodejsexpress 这个也不难。网上搜搜代码就行。问 ChatGPT ,让它开个头也可以。
|
75
bianhui 362 天前
我工作除了 java 主流后端语言全都用过(工作中)。其实只要你对一门高级语言理解的透彻(当然 c 的概念还是得理解的),千变不离其中。花一天看一下这个语言的语法,特性。剩下六天,找一个你最擅长语言写过的一个中小项目,直接用新学的语言上手去做。遇到不会的就去查。7 天足够到应用与入门程度了,至于精通,肯定会随着你的使用越来越深。根本不需要什么这个教程,那个教程的。
|