学习第二门语言是否会导致记忆错乱?这个有办法解决吗?包括语法、常用库用法、仓库代码组织方式这些。
1
tsqqqqqq 283 天前 16
个人理解, 写代码永远只是思路以及工程问题,跟语言没什么关系
|
2
chf007 283 天前 3
当然不会,反而会开阔你的视野
|
3
cyningxu 283 天前 via Android 1
语言不就是一个工具而已,主要是编程的思想
|
4
chf007 283 天前 3
细数我学过的语言:VB C++ C Perl ASP PHP JavaScript HTML CSS Java C# Python SQL Go Assembly Rust Kotlin Dart Bash Elixir Groovy 从没有错乱啊
|
5
mantouboji 283 天前 3
看来楼主不适合吃这碗饭。
|
6
yanyao233 283 天前 via Android 1
偶尔错乱,但鲜红的 ide 提示会迅速把我拉回来,偶尔一个语言太长时间没用看 ide 提示也想不起来语法,就去翻翻语法速查,不费啥时间
|
7
kahlkn 283 天前 1
记忆错乱肯定会有的,举个例子就是 A 语言的关键字或语法,和 B 语言的关键字或语法搞混了。
解决方案我觉得全靠 IDE 的自动提示把。 但是像一些语法比较灵活的脚本语言,我觉得大概率是避免不了的把。 赞同楼上,翻一翻语法速查。 |
8
henix 283 天前 1
可以看看 七周七语言 https://book.douban.com/subject/10555435/
|
9
BeiChuanAlex 283 天前 2
我学过的语言:
汇编、Java 、Python 、Rust 、Scala 、Js 、C 、Html 、Css 、SQL 、Dart 、Shell 感觉没有错乱,反而可以举一反三,学新语言很快。 |
10
bingfengfeifei 283 天前 2
不怎么会记忆错乱,只是写多了某些不用分号的语言,再去写需要分号的语言,经常容易忘记分号而已
|
11
zhujinliang 283 天前 via iPhone 2
有了 Copilot ,现在更不会混乱了
|
13
gamexg 283 天前 1
会,
但是问题不算大,ide 会提示错误,反应过来就会纠正错误 然后即使个别忘记的,翻一下学习笔记就能想起来 |
14
anUglyDog OP @mantouboji 看了底下的评论,只有尊贵的您适合吃这碗饭了
|
15
anUglyDog OP @mantouboji 另外,为啥你的评论总是带点不友好?你可以自己回顾一下。
|
16
mantouboji 283 天前 1
@anUglyDog 你这个回帖更加证明你吃不了这碗饭,一点儿起码的逻辑思维能力都没有。可怜的孩子,趁早改行去送外卖吧。
|
18
yooomu 283 天前 2
记忆错乱倒不会,只是可能会感觉会不太习惯。一个语言写多了,就会有肌肉记忆的,这时去写另一种,自然会感觉蹩脚,不过仅限于语法差距较大的。像 java 和 js 这种 c 系语言,完全可以无缝切换。另外感谢楼主帮我丰富黑名单
|
19
DOLLOR 283 天前 1
善用开发工具,为每个语言制作 snippets
|
20
CLMan 283 天前 2
在我第一次尝试学习第二门语言时也会有你一样的想法,也给我带来了许多困扰。我的思路是这样:
1. 掌握编程的常识,《 SICP 》或者说 CS 61A 就是提供这方面的知识,好一点的科班教育在入门阶段基本都会提供类似的课程。 变量、常量、类型、运算符、语句表达式、函数、对象、递归、异常、OOP 、函数式...,要对这些概念的内涵和用途有所理解。 现代的商业编程语言都离不开这些通用的概念,可能会添加新的概念,可能会做语法变更。 2. 掌握 CS 的常识,这对非科班出身的人来说是一个障碍,编程语言里面的很多概念来自于其它的 CS 领域,比如数据结构(hashmap,list)、操作系统(同步、异步、线程),编程语言的书籍由于预设你具有相关领域知识,或者由于语言封装的原因,并不能很好的帮你学习这些概念。 3. 不要去死记硬背语法细节,而是在使用中熟悉语法,信任语法手册、笔记、现代 IDE 、ChatGPT 。语法遗忘是正常的,是否学会一门语言并不是你能否将语法倒背如流,而是你用该语言编写了项目从而给你了信心。 4. 关注 diff ,当你以及有了足够的知识,学习新的编程语言时,只需要带着该语言的设计思想与你学过的语言(同生态位,或者设计上存在渊源)进行比较,区分不同。 |
21
darcyC 283 天前 5
看了楼上的一些回复,我也想分享一些我对这个问题的看法。
首先要指出,在任何的情况下,一个程序员只会 1 个语言作为自己的工具是完全不可能的事情,即便是一般的程序员,也通常都需要掌握多种不同的语言,通常会到近 10 种甚至更多(在这里我把 HTML 等一系列的标记语言也算在内)。 我看到 OP 已经提到了“标准库用法”这一关键字,我就知道楼主已经入门了,因为我们知道,除了语言本身,标准库的使用方法更是体现你是否掌握这门语言的一个考察点。对于这方面,我认为,在你已经学习了一个语言的标准库的用法之后,你不必担心你是否会混,是否会忘记,这是因为我可以百分百跟你保证,只要你不常用,即便你之前学过,你百分之百会忘记标准库里的类/函数/方法的用法(这里的用法包括脚手架代码,函数调用时参数的最佳实践等),此时即便你有 IDE 的帮助,你也会十分痛苦,就好像你的脑子开始重新载盘了(疯狂 swap )。 因此你看,这就是为什么我们有 Docs (文档)了,甚至还有诸如 DevDocs 的聚合文档供大神们使用了,再次重申,没人同时记得住这么多语言的所有用法,在你确保第一次搞懂概念后,泛化这个概念后,随他去吧,不要让记忆这些有的没的 API 阻碍了你的发展。 |
22
Mogeko 283 天前 via iPhone 1
当你学会新的语言后 即使太久不用 忘记了
捡起来也只需要五分钟 |
23
little_cup 283 天前 1
我觉得不仅要多掌握几门编程语言,有条件最好学一些不同的自然语言。多体会语言背后的设计思路和演化历程,才能用不同的视角来看待问题,发现不一样的世界。
|
24
roseduan 283 天前 1
月经贴又来了,看我之前的帖子吧 https://www.v2ex.com/t/891197
|
25
arnosolo 283 天前 1
依赖注入这个概念我是在 Android(Kotlin)的课程上学的, 但是最终用在了 Web(TS), iOS(Swift)和服务端(TS)上. 如果我只学过 js 的话, 可能这个概念我会一直不知道.
至于语言系统混乱的话, 会发生的, 但是不用担心, 文本编辑器会报错. 最后, 猜猜下面这段代码杂糅了哪两种语言. CameraRoll.save (tag: uri); |
26
dj721xHiAvbL11n0 283 天前 1
你可以学那种八竿子打不着的语言哈哈哈,这样混淆概率极低
|
27
layxy 283 天前 1
有时候会,可以依靠 ide 来解决
|
28
dog82 283 天前 5
不会错乱,但是会受第一门语言风格的影响
|
29
lasuar 283 天前
不同语言是不同的作者,本质上代表不同的思想,你需要让他们在你的脑子里发生碰撞,这样才会学会一些不常见的知识。这好比不同的 D 、不同的国家文化。踏出第一步,去做就行了。
|
30
lovedebug 283 天前 1
说实话会的,每门语言都有自己的习惯和使用方式。
一味的照搬代码也能运行,就是让同行读起来很奇怪,不顺畅。 |
31
zero47 283 天前 1
差异大的不会,差异少的也是不熟悉导致的。好的特性都是互相模仿的,比如 go 的协程和 java 的虚拟线程
|
32
jianrenjun 283 天前 1
对于普通人的我来说 学习多门可能不难 但是真的在工作中的时候快速切换稍微需要一点时间
|
33
mightybruce 283 天前
语法这些根本不用记,越用越熟练。
这个话题只能说 OP 接触的语言实在太少了。 不同语言的 programming paradigm 是不太一样的, 如果是同一类型的 paradigm, 那么是分分钟钟上手的。 多学学没坏处,就不会思维定势了。 |
34
fcfangcc 283 天前 1
同时写 Python ,Rust ,Go ,Java ,JS/Vue 的路过
除了有时候 括号/大括号/def,fn,function 会弄混乱,其他都还好。 |
35
waterlaw 283 天前 via Android 1
学个 c 语言就不错,不管你是干 Python, Java 还是 JS, Go, 它们底层都是用 c 写的。
|
36
pikko 283 天前 1
所以我 dock 上的 dash app 一直是重要的位置。
例如 a in b 这种语法在 js 和 python 完全不一样的用法,在 js 居然只能遍历索引。 这样查多了就好了,没啥需要纠结的。 |
37
wxw752 283 天前 1
会存在箭头是=>还是->偶尔搞错的情况,但是没关系,编辑器当场报错就改了。
|
38
43n5Z6GyW39943pj 283 天前 1
谁能记住这么多语法/api,忘了就看一下文档即可
|
39
thinkershare 283 天前 1
有时候会有一点混乱: 特别是相似很高的编程语言。目前我学过并写过项目的编程语言有:C#,Golang,C,Python,Java, TS,JavaScript,R.
学过的有: C++/Rust/Haskell 。 有时候真的会搞混一些语法。特别是这些语言中大量都是类 C 的,相似性太高,另外就是他们的惯用法差别还是很大,有时候换一门语言,就要换一种思考问题的方式。 |
40
wjx0912 283 天前
op 可能需要这个^_^
https://learnxinyminutes.com/ |
41
sankooc 283 天前 1
2 个语言的话 不至于产生混乱
|
42
SilentOrFight 283 天前 1
语言其实用多了就熟的,错乱肯定会有的,Android 开发,最近经常是多个项目并行,老项目 Java 、新项目 Kotlin 、鸿蒙 typeScript ,有时候写完一行代码,停在那宕机了,在想要不要加个分号呢~
|
43
fyxtc 283 天前
想象一个工人,他的工具箱里肯定有很多不同的工具,每个工具对应它擅长的领域,一个优秀的工人不可能工具箱只有锤子,那么他只能敲东西。肯定也有他常用的主力工具,因为大部分场景可能都需要它。其实这里类比的工具更贴合框架,而不是语言,语言其实相当于更基础的材料了。比如同样的工具木质与铁制,哪个需要用哪个。大家也不要喷 OP ,都是这么过来的,有的人快有的人慢而已。
如果只是为了学语言而学语言是完全没必要的,浪费时间而已。你应该是受到产品或需求驱动,比如你是后端,你想玩油猴那就学 js 和前端知识,想搞跨平台 app 那就学 dart/flutter ,想搞游戏那就学 c#/u3d 。如果你是想学后端,可选就更多了,找个顺眼的学就行。重点是:学语言本身从来不是目的,你想做的东西才是。 |
44
thedinosaurmail 283 天前
后端的话如果主力语言是弱类型语言比如 php ,就可用学 java/c++/rust/go
后端如果主力语言是 java ,可用学 rust/js/c/groovy/go 也就是主力弱类型语言就学一门强类型语言 如果主力语言是有 gc ,就学一门无 gc 的语言 如果想 nlp 就 python+ c++ + rust 如果是前后端都想学就学 js/ts/react |
45
WngShhng 283 天前
我日常开发用的语言 Java, Kotlin, Python
偶尔用的 C/C++, Swift, Javascript 语言只是表面,核心是数据结构和算法 |
46
psklf 283 天前
@SilentOrFight #42 鸿蒙 开发是什么个状态?和 android 像吗?
|
49
SilentOrFight 283 天前
@psklf #46 ArkTS 声明式 UI ,和 Flutter 比成熟度很差,api 不成熟,ide 不成熟,模拟器不成熟,唉,难啃的骨头
|
50
cleanery 283 天前 1
不会, 有思路就好了, 语法速查, idea 自动提示, 还有参考之前的代码
|
51
vincent7245 283 天前 1
我以前是纯 java/c++,后来转大数据学了 scala 和 python ,当时就觉得 scala 是什么鬼东西,烂七八糟的函数一点都不严谨。后来闲着没事学了点前端,同样感觉 js 烂七八糟的。再后来学了 go ,差点没气死。最近一年学了 rust ,我开始反思自己太狭隘了,各种语言都有自己的设计理念,都是为了解决特定问题而生的,是我自己理解不了他们,固步自封,反而认为某个语言垃圾,是我自己的问题。
|
52
Promtheus 282 天前 1
我一般都是用到再学 现在有 gpt 更方便了 不会就可以开始写了。不管什么语言 搞个一周足以写项目了,深入的学习可以在项目中练习。
|
53
forty 282 天前
学习第二门语言???
有程序员自学 1 门语言的吗??? 少的两三种, 多的一二十种也不稀奇. c, c++, c#, 多少会点儿; js, vbs, python, go 多少都会点儿; vb, delphi, java 也多少会点儿. html, css, markdown 这类应该不算语言, 只能算有语法吧. |
54
sadhen 282 天前
来学 Scheme 吧
|
55
Makabaka01 282 天前 1
大部分时候还好,小部分情况可能会碰到某些 case 一下子转不过弯卡一会儿。比如 Go 的 switch 不需要 break 这种
|
56
Alwaysonline 282 天前
学好普通话(如果普通话不好的南方小伙,那就是第二门),然后转行干直播写代码/卖课。hhhh
|
57
5had0w 282 天前 1
还好吧,主要是 ide 有提示,所以问题不大
|
58
FYFX 282 天前 1
会错乱,不过你把 IDE 设置好,动态类型能加类型检查就加上,这样打错了立马也能改回来,还有每种编程语言都有特定的命名习惯,格式规范,这种加个 lint 应该也还好。不过每种语言可能都有自己偏好的写法,这就很有可能写混了,不过这个 gpt 之类的好像能帮忙?
|
59
exploreexe 282 天前 1
有些编程语言的写法确实很奇葩,用来用去还是 python 好,是真简单清爽啊。
之前写 OC @ [] 各种花里胡哨 现在该成 swift 也是奇奇怪怪 如果不适应就上 AI 吧 都不用自己写 给个思路 就完事 |
60
liyafe1997 282 天前 1
对于我来说,感觉编程语言本身从来就不是一个值得去“学习”以及这么来讨论的东西。各种编程语言就像各种工具,跟各种螺丝刀,扳手没什么两样。更值得讨论或者研究的话题是,你需要做什么,怎么做,需要设计什么样的机械结构(系统架构),然后再讨论需要用什么样的工具(编程语言)。因此更重要的是了解和讨论各种工具(编程语言)的特点,局限性,边界,适用场景,优缺点等等,而不是围绕着编程语言这个东西团团转。
|
61
liyafe1997 282 天前
@tsqqqqqq 非常赞同你这句话 “个人理解, 写代码永远只是思路以及工程问题,跟语言没什么关系”
|
62
xiaowei7777 282 天前 1
程序员第二门语言=英语
|
63
Flicker 282 天前
不会,学吧
|
64
shermie 282 天前 1
还是会的,会经历几个时期吧,特别是在学的时候,大概就是:错乱->清楚->错乱...,然后等所有语言都比较熟悉的时候,就融会贯通了。
|
65
enjoyCoding 282 天前
16 楼点不开了哇
|
66
anUglyDog OP @enjoyCoding 它号已经没了,我觉得吵架浪费心力,所以直接 @了 Livid 。
|
67
ihuzhoui 282 天前 1
额,错乱是肯定的,平时 Objective-C,Swift,C++混编,交融不了一点,习惯一个就会生疏另一个.
|
68
deorth 282 天前 via Android
怎么,还有人没有第二门语言
|
69
akring 282 天前
程序员应该有无数门语言,借用汪曾祺写的一段话:
「甚矣,中国人口味之杂也,敢说堪为世界之冠。 有些东西,自己尽可不吃,但不要反对别人吃。 总之,一个人的口味要宽一点、杂一点,“南甜北咸东辣西酸”,都去尝尝。对食物如此,对文化也应该这样。」 |
70
ivvei 282 天前 1
忘了就查呗。偶尔切到一个平时用得不多的语言时,我经常连基本的关键字都想不起来,比如记不清是 else if 还是 elsif 还是 elif , 但是搜一下就有嘛。就连我平时用得多的语言,比如 C++,很多标准库里的用法我也是需要临时查一下的。
|
71
Hopetree 282 天前 1
有 IDE 在就不会错,没有的话,我感觉很容易错,但是谁写代码不用 IDE 呢,所以,结论就是不会错
|
72
ChanceLi 282 天前 1
以前也觉得会混乱,现在发现,交叉记忆不仅不会混乱,反而会加深记忆和理解,前提是找到它们的共性和本质,归类总结。比如某种语言的特性和另一种语言的特性本质上是一样的,只是写法上的差别。比如闭包这种概念,MDN 上的解释是,闭包是由函数以及声明该函数的词法环境组合而成的,这里的闭包和 Java 中的类的概念非常类似,本质上看,就是一个代码段和数据段的捆绑组合包,有些语言可能没有闭包这种概念,但只要它的语法支持将代码和数据捆绑起来,它就能以某种方式实现和闭包一样的作用。所以 Java 实现闭包的方案就是把函数包装成一个类,把所谓的外部词法环境拷贝进这个类,作为其属性,从而将它俩捆绑在一起。JS 也反向借鉴了一波,既然这两者本质一样,你能用类实现闭包,那我也能用闭包实现类。
|
73
iintothewind 282 天前 1
写代码就是写代码, 开发人员的代码能力不应该被某一种语言限制.
如果还只是停留在我是 Java 程序员, C#程序员, C++程序员, 或者看到别人的工作用 Java, 就说你们 Java 程序员就知道 Spring 等等刻板印象...............就可笑了. 多尝试一下不同范式的编程语言, 有助于提高自己的编程品味. |
74
xarthur 282 天前 via iPhone
想得太多,学得太少了。等学完一打语言一般就不会有这种问题了。
|
75
SeaTac 282 天前 1
是会有一些习惯问题
但不是有 ide 和 ChatGPT 么 |
76
HENQIGUAI 282 天前
会错是因为你用的太少了,举个例子,学会中文了,再学英文就会把中文忘记吗?如果一直用几十年英文,再回来用中文,会忘吧。所以这是使用频率的问题,和学第几门语言没有关系。
|
77
angryfish 282 天前 1
语言,一方面是学语法,另一方方面了解常用库。偶尔会错乱,偶尔会想用某语言下的库,但另外一种语言却找不到。
|
78
Braisdom 282 天前 1
|
79
hellofreckles 282 天前 1
有了 gtp 以后开始写 Python 代码,一年的事件写了 2 个大点的项目,无数个小脚本,到现在我要是通过 panda 去过滤行列仍然会去问 gtp 。但是做出的东西已然得到了老板和同事的认可。
|
80
fredweili 282 天前 1
编程只是不同的语法,语言的话学好英文,多用 google
|
81
journalistFromHK 282 天前 1
我在想,如果有一个函数,会不会有的语言是先声明类型再声明变量参数,有的是反过来的,有的中间是空格,有的中间是":"或者其他符号...虽然代码语法都大差不差 但是格式大相径庭?
|
82
bojackhorseman 282 天前 1
|
83
bojackhorseman 282 天前
|
84
jimrok 282 天前 1
其实不会,我写过 java ,python ,c#,ruby ,还有一段时间 js ,稍微用一段时间,就能熟练。
|
85
pikko 282 天前 1
@exploreexe #59 python 写匿名函数都好麻烦的,处理 list 也没有 js 简洁明了,太过程式了
|
86
darkengine 282 天前
才两门?
|
87
fishily1993 282 天前 1
在有现代 IDE 的今天,几乎不会
|
88
salor 282 天前 via iPhone 1
真佩服你们的信手拈来,学完新语言不学框架不背 api 啊?
|
89
1252603486 282 天前 1
@bojackhorseman #82 说的很好,编程和语言是两回事,需要熟练编程,语言的话看想干啥就用啥,我记得 course 有一个很出名的课程就叫 programing course
|
90
woody3rd 281 天前 1
英语将会是世界上最好的编程语言
|
91
rainbowismagic 281 天前 1
前几天做笔试的时候,啪啪敲完调试死活不对,最后发现是 cpp 赋值语法问题
`x, y = p.first, p.second;` 原因就是平时 python 和 golang 写的相对多,混淆了。。敲得快没仔细想就犯错了 XD |
92
patrickwangqy 281 天前 via Android 1
我也学过好几门正经语言了,vb ,c++,python ,c#,go ,长时间(可能几个月)不用就生疏了,再写肯定要翻翻代码看看语法啥样子。像 vb 好几年都没用我现在肯定写不出来了。语法混淆肯定是没熟悉导致的,跟你最近常用语言有关系
|