V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
superXiong
V2EX  ›  程序员

请教下,对于一种语言,如何称之为精通?

  •  
  •   superXiong · 2018-08-01 09:47:20 +08:00 · 6373 次点击
    这是一个创建于 2335 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近由于接手某新项目,需要用到 ruby 的 ROR 框架,负责人是业界大牛,一个劲给我讲着 ROR 的好处, 最后说:“虽然这个语言现在不是很流行,但是面向程序员很友好,如果你能精通,对其他语言的学习也是有很大帮助的。”

    我没搞明白他讲的最后那句话的意思......有时候学习一种语言,学到一定程度,业务可以搞定了,就不知道该往哪个方向走......

    主要是精通这个词,何谓之精通?对于 ROR,或者说说比较火的 Java 和 Python,如何才能称之为精通?

    73 条回复    2018-08-03 10:49:24 +08:00
    yhxx
        1
    yhxx  
       2018-08-01 09:50:05 +08:00
    这种鬼话。。。
    msg7086
        2
    msg7086  
       2018-08-01 09:52:39 +08:00   ❤️ 2
    每个人有每个人心目中的精通。

    你要说 Ruby 的话,看完元编程那本书,能很好地用其中的知识来做开发,比如自己设计一个 DSL,那我觉得已经算是掌握得很好了。毕竟不是人人都能 DHH 的。

    至于 Rails,这货也不是「语言」啊,是框架啊。

    你要打算以后转到其他语言的话,学 Ruby 的确有很大帮助。集 Perl Lisp Smalltalk 的优点于一体,相当于让你一口气接触到三种完全不同的编程风格( Perl 的 Shell 风,Lisp 的函数式风,Smalltalk 的 OOP 风),对扩大视野很有好处。

    当然如果你要做后端开发的话,操作系统底层的东西(包括 C 和汇编)都要有所了解,这些是 Ruby 没法带给你的。
    msg7086
        3
    msg7086  
       2018-08-01 09:55:21 +08:00
    我们大学里的时候,学编程语言的技术,是学的 Haskell 和 Prolog,学得一脸懵逼。
    后来发现玩元编程,直接深入到语言的层次架构里去折腾,也是一种很好的学习过程。
    duck2u
        4
    duck2u  
       2018-08-01 10:03:50 +08:00
    编程实现 idea 的时候,第一门想到的语言
    kingwl
        5
    kingwl  
       2018-08-01 10:04:48 +08:00
    @msg7086 不搞 PL 的话 深入语言帮助不大 感觉
    whypool
        6
    whypool  
       2018-08-01 10:11:46 +08:00
    实现需求不加班,就精通了
    Eirxxx69
        7
    Eirxxx69  
       2018-08-01 10:11:58 +08:00
    刚学前三个月的时候有这样的错觉
    4u1kto
        8
    4u1kto  
       2018-08-01 10:16:35 +08:00
    你学英语是为了什么,是为了理解别人,是为了让别人了解你自己。
    PythonAnswer
        9
    PythonAnswer  
       2018-08-01 10:18:06 +08:00   ❤️ 1
    自己能实现这个语言的编译器、解释器。基本上算是对语言方方面面有了相当的了解了。下一步是优化,优化到比原版的实现还好,就是大牛了。
    zynlp
        10
    zynlp  
       2018-08-01 10:20:01 +08:00 via iPhone   ❤️ 2
    c++的世界里没有精通
    superXiong
        11
    superXiong  
    OP
       2018-08-01 10:23:31 +08:00
    @msg7086 感谢大佬指教,对于 Java 和 python,能否请大佬说说您对这两种语言精通的理解,谢谢!
    fantastM
        12
    fantastM  
       2018-08-01 10:24:03 +08:00 via iPhone
    对于一个女人,如何称之为精通
    yulitian888
        13
    yulitian888  
       2018-08-01 10:31:30 +08:00
    对于任何一门技能(不限于计算机语言)能把道理的各种方方面面都讲给别人挺得懂的,就算精通了
    至于“面向程序员很友好”,所谓对中国程序员友好的汉语编程跃跃欲试,宇宙第一 IDE 站在一旁笑而不语
    lk0317
        14
    lk0317  
       2018-08-01 10:34:40 +08:00   ❤️ 1
    编程语言和人类语言一样,在绝大多数场合能用正确的方式使用,避开常见的错误就行。

    不是语言学家,从事写编译器或相关工作,再或者兴趣原因的,没有必要做到精通,绝大多数长期生活在中国的中国人也做不到精通汉语,但不影响流利使用。

    大多数人应该把精力放在能用这门语言做的事上,就像作家应该拿作品说事一样,不要在茴字的几种写法上耗费精力。
    lk0317
        15
    lk0317  
       2018-08-01 10:37:45 +08:00
    上面说的是狭义抬杠领域的精通,广义的精通我觉得这门语言网上能找到的 99%面试题你都会就可以理解成精通了。
    cyrbuzz
        16
    cyrbuzz  
       2018-08-01 10:39:01 +08:00
    可能是融汇贯通吧。
    jasonyang9
        17
    jasonyang9  
       2018-08-01 10:39:45 +08:00
    能骗过面试官
    msg7086
        18
    msg7086  
       2018-08-01 10:42:44 +08:00
    @superXiong 不懂 Python 和 Java。
    最多就是组里要用这两种语言开发的时候边看边写,写完就忘。

    @yulitian888 汉语编程是说易语言吗?
    易语言的 IDE 出现的时候微软还没做出同等水平的 IDE 来。
    一直到后来 ReSharper 问世才做到跟踪变量名进行名称重构。
    StephenDev
        19
    StephenDev  
       2018-08-01 10:46:55 +08:00
    用起来游刃有余吧,这个游刃有余并不是说不看文档都会用。而是不管你遇到什么需求,你知道使用这个语言怎么解决,然后知道如何去查相关接口的使用。然后能够真的实现。
    ioth
        20
    ioth  
       2018-08-01 10:50:17 +08:00
    精不通就射不出来啊。
    哪个男人不懂?
    pony279
        21
    pony279  
       2018-08-01 10:50:42 +08:00
    把主攻的方向写成精通,其他方面也许游刃有余,但是不想作主业来搞。也不想把简历变成一堆精通,毫无重点。
    yulitian888
        22
    yulitian888  
       2018-08-01 10:53:43 +08:00
    @msg7086
    曾经有一大批以“面向程序员很友好”为口号的汉语编程,当然也包括易语言在内。只是目前还活着的可能就只剩下易语言了(感觉也就半口气)。但是要说易语言出 IDE 的时候还没有 VS,这个就只能呵呵哒。易语言 IDE 山寨的就是 VS。
    xd314697475
        23
    xd314697475  
       2018-08-01 10:56:24 +08:00   ❤️ 2
    stackoverflow 上该语言话题的随机 10 个最火的问题都能回答上来

    python 的链接:
    https://stackoverflow.com/questions/tagged/python?sort=frequent&pageSize=15
    Nobitasean
        24
    Nobitasean  
       2018-08-01 11:01:47 +08:00
    语言作者
    Mazexal
        25
    Mazexal  
       2018-08-01 11:06:54 +08:00
    我阿里的朋友用 java 举例说....你打开一个 jar 包, 能从上往下依次所处这个 jar 包是干啥用的....就算精通了
    LadyChunsKite
        26
    LadyChunsKite  
       2018-08-01 11:08:33 +08:00
    @xd314697475,这个方法不错哎,每天看几条。
    Phariel
        27
    Phariel  
       2018-08-01 11:09:11 +08:00 via iPhone
    RoR 吹了七八年了 越来越凉 你觉得呢?
    across
        28
    across  
       2018-08-01 11:18:09 +08:00
    好像老赵发过博文,说他以前面试时敢说精通 C#,底气在于他自认为论 C#没有考官考得过他。
    FrankFang128
        29
    FrankFang128  
       2018-08-01 11:21:16 +08:00
    精通使用梅花起子…… 有用么
    一般我们只说精通某个领域,比如精通洗衣机维修,精通 Web 开发。
    iannil
        30
    iannil  
       2018-08-01 11:22:44 +08:00
    知其然,知其所以然。
    v2xe2v
        31
    v2xe2v  
       2018-08-01 11:36:53 +08:00
    如果是你写的 你肯定精通了
    tt67wq
        32
    tt67wq  
       2018-08-01 11:48:27 +08:00
    从来只敢写熟练,,,汉语我都不敢说精通
    Shy07
        33
    Shy07  
       2018-08-01 11:48:30 +08:00 via iPhone   ❤️ 2
    @msg7086 #2

    学 Ruby 也是可以了解系统层面的,你不知道某些人为了用 Ruby 开发 2D 游戏有多努力,从 C/C++ 到 DX8,从键盘事件到粒子系统,硬是从一个 Ruby 脚本熬成了 Windows 游戏开发……最后,RPG Maker MV 使用 JS 跨平台以后,他又 p 颠 p 颠去学 Coffee 和 ES6 了……


    没错我就是那个人
    codermagefox
        34
    codermagefox  
       2018-08-01 12:05:20 +08:00
    入门:应该这么写?
    熟练:应该这么写....
    高阶:应该这么写!
    精通:应该这么写.
    kidult
        35
    kidult  
       2018-08-01 12:10:59 +08:00
    时薪不到 100 美元,就别说什么精通了
    hyyou2010
        36
    hyyou2010  
       2018-08-01 12:21:06 +08:00
    不必做语言律师,大体理顺,够用即可,把主要的精力放在业务上
    以前学 Android 编程,感觉只学也只用了 Java 语言的初中级内容
    msg7086
        37
    msg7086  
       2018-08-01 12:49:37 +08:00
    @yulitian888 你莫不是说的 Visual Studio 6.0 ?那玩意儿可以自动重构变量名函数名?
    我读书少你别骗我啊……
    yulitian888
        38
    yulitian888  
       2018-08-01 12:51:52 +08:00
    @msg7086 原来“同等水平”指的是变量重命名?
    msg7086
        39
    msg7086  
       2018-08-01 13:13:43 +08:00   ❤️ 1
    @yulitian888
    所以你是知道易语言的 IDE 会做代码预编译并且把所有的变量名在内部链接起来的是吗?
    你也是知道这个重构功能直到 2004 年 JB 家发布 ReSharper 以后才在 VS 上实现的是吗?

    还是你根本不知道?

    如果你说的 IDE 只是左边控件框右边属性页能编译能调试就能叫做宇宙第一 IDE 的话…… ermmm
    还是我理解错了,你说的是 Delphi ?

    Delphi 的确牛逼。
    cholerae
        40
    cholerae  
       2018-08-01 13:30:49 +08:00
    有底气面对任何人针对语言的 challenge 基本就可以认为是精通了
    yulitian888
        41
    yulitian888  
       2018-08-01 13:34:26 +08:00
    @msg7086 我只知道的是 VS6 能让我看到内存运行状况,VS6 可以加载符号调试不属于我的程序,嗯,仅此而已。
    msg7086
        42
    msg7086  
       2018-08-01 13:37:51 +08:00
    @yulitian888 那我们说的就不是一个层面的东西了。
    易语言本身也不是用来处理底层。
    拿类似用途的 VB6 举例,VB6 应该也不能做你说的这些事吧。
    azh7138m
        43
    azh7138m  
       2018-08-01 13:51:11 +08:00 via Android
    @yulitian888 重命名很难,要分析作用域的,又不是简单的文本替换
    yulitian888
        44
    yulitian888  
       2018-08-01 13:56:00 +08:00
    @azh7138m Code DOM,我做过
    azh7138m
        45
    azh7138m  
       2018-08-01 13:59:22 +08:00 via Android
    @yulitian888 System.CodeDom ?那是微软给你搞好了
    yulitian888
        46
    yulitian888  
       2018-08-01 14:16:39 +08:00
    @azh7138m 嗯,说的好有道理哦,似乎比我自己更懂我的经历
    visonme
        47
    visonme  
       2018-08-01 14:31:18 +08:00
    如果说某种语言精通,我的理解通常是:你已经了解该语言的基本架构并具备 hack 该语言的能力了。 而此时熟练应用该语言开发是最最最最基础的能力了。

    之所以很多人会告诉你“如果你能精通,对其他语言的学习也是有很大帮助的”,因为大多数语言的底层架构是相似的,对于一个已经了解语言底层架构的人来说,熟悉新的语言那不是很容易码?

    熟练应用某种语言是基础,深入某种语言除了语言本身还需要很多了解很多额外的技术的
    azh7138m
        48
    azh7138m  
       2018-08-01 15:35:19 +08:00 via Android
    @yulitian888 没毛病,一般是操作 AST 的
    zhzer
        49
    zhzer  
       2018-08-01 15:52:10 +08:00
    对于上班来说,能轻松满足需求就算精通,毕竟面向甲方编程
    chungzh
        50
    chungzh  
       2018-08-01 16:24:19 +08:00   ❤️ 1
    C++:精通我?没有的事!
    crist
        51
    crist  
       2018-08-01 17:23:32 +08:00
    这世上没有任何人敢说精通 C++
    chris89
        52
    chris89  
       2018-08-01 17:52:55 +08:00
    个人认为
    就是使用同样的语言和机器配置
    处理相同的问题时
    你的程序运行时间 /内存使用率等都是最优的
    应该算是吧?
    bumz
        53
    bumz  
       2018-08-01 18:27:28 +08:00
    与其自以为「精通」某一门语言,不如掌握所有的程序语言:

    [如何掌握所有的程序语言]( http://www.yinwang.org/blog-cn/2017/07/06/master-pl)
    loqixh
        54
    loqixh  
       2018-08-01 19:38:21 +08:00
    @yulitian888 这个 你故意曲解吧? 别人说的是易语言同一水平 IDE 看了下易语言是 2000 年开发的 那时 vs 还真没有 只有 vc6
    wupher
        55
    wupher  
       2018-08-01 19:39:24 +08:00   ❤️ 1
    Java (groovy kotlin scala) / Python / Ruby (含 ROR 框架)这三块都有用过。

    ROR 是个很也不起的开发框架,最早接触时还是 v1.0 版本。那里不是 Ruby 程序员买 MacBook 就是为了方便使用 TextMate 来进行 ROR 开发。印象里那时大部分公司还是用 struts,与满眼的 xml 配置文件相比,Ruby On Rails 真是太酷了。话说也是那时 t 上关注的 DHH。

    那时大家都认为 Ruby & ROR 是 Web 开发框架的未来,好吧,十来年过去了,它仍旧属于小众。其实,即使是用 Ruby,大家现在更喜欢用更轻量的 Sintra like。

    但是 RoR 的思想和影响还是影响了业界,像之后的 sintra flask SpringMVC ……都受到它的影响,从这点来说,ROR 还是挺牛 B 的。包括现在偶尔在项目中用的 Groovy 和 GRails 也是对 Ruby 及 RoR 的学习和致敬。

    Ruby 语言灵活,多变。各种 meta class 和代码生成技巧可以非常方便的将之封装成 DSL,这是它的一大优势。当然,过于灵活的结构与 meta 封装,在多人团队中怎样保持统一的代码风格和过度包装,这也是一项挑战。

    Java 语言如果用于 Web 开发,现在一般用多 SpringMVC 甚至 SpringFramework。相较之下,它的性能会比 Ruby 更好。连接灵活度更高,尤其是与各种第三方中间件。

    Python 也可以使用于 web 开发,flask Django Twist,不过它的热门我觉得是由于 pandas sci tf。唉,想想 python challenge 的第一题 2^38,再想想上周折腾的坑爹 BigDecimal,这方面真没的比。
    kaifeii
        56
    kaifeii  
       2018-08-01 19:40:16 +08:00
    自举
    JerryCha
        57
    JerryCha  
       2018-08-01 19:50:13 +08:00
    纸上手写代码无 bug
    Leigg
        58
    Leigg  
       2018-08-01 20:22:52 +08:00 via iPhone
    精通再上一层就是语言创始者,自己体会咯。
    Eagleyes
        59
    Eagleyes  
       2018-08-01 21:36:10 +08:00
    类比语文吧。
    编程像说话,像写作文一样,脱口而出,不用想,就勉强算精通。
    说英语,用英语写作,你脑子里都要转换翻译一样,这就不算精通
    way2create
        60
    way2create  
       2018-08-01 21:40:29 +08:00
    看你面对谁了,面对不懂的领导,会吹 NB 就叫精通了(滑稽
    ww2000e
        61
    ww2000e  
       2018-08-01 21:40:52 +08:00 via Android
    像那些高级脚本语言参与语言开发算不算,一下精通两。。
    likuku
        62
    likuku  
       2018-08-02 01:43:36 +08:00
    实现全功能编译器 /解释器,如此这般对所有编程语言一视同仁,标准一致。
    ilgharkus
        63
    ilgharkus  
       2018-08-02 03:13:00 +08:00
    精通这种东西需要几十年的积累,像 C++这种这辈子就别想了,其他的需要会熟练运用大部分框架,熟练许多种写法,之类,熟练的东西多了,覆盖的广了,就精通了。
    msg7086
        64
    msg7086  
       2018-08-02 06:24:29 +08:00
    @wupher Rails 现在差不多还是搭 POC 项目的首选框架,等项目做大了再考虑换别的语言就行了。
    yulitian888
        65
    yulitian888  
       2018-08-02 08:29:54 +08:00
    @loqixh 也这算曲解的话,正解又是什么?莫非 Vs6 已经被开除出 VS 家族了?
    随便搜个光盘封面以正视听 https://page.auctions.yahoo.co.jp/jp/auction/f229614908
    superXiong
        66
    superXiong  
    OP
       2018-08-02 09:34:57 +08:00
    @msg7086 大佬,POC 项目是指 POC 测试吗? Proof of Concept ?
    wupher
        67
    wupher  
       2018-08-02 10:00:58 +08:00
    @msg7086 每种架构的选择都有背后的抉择,你总是要选择一些,放弃另外一些,不可能面面俱到。这也算是一种“等价交换”吧。

    RoR 确实出活快,快速原型非常方便。但是一到后期,性能和代码风格(大团队、历史)都会带来很大麻烦。强如 Twitter,最后也进行了改造和重构。

    项目成型再改造确实是一种思路。但是,一方面业务正在快速发展,一方面还要推翻重构,很有可能会对业务产生影响。再考虑一些业务外的东西:高速发展期很可能人员、管理、投资人都会面临较大变动。此时要全面变更技术栈,无论从个人利益、原有团队利益甚至公司未来发展都会带来较大变数。

    考虑现在新的框架和架构早已不逊 RoR,我个人应该会选择其它的方案。
    finaldusk
        68
    finaldusk  
       2018-08-02 10:40:58 +08:00
    精通英语-->26 个字母全认识
    xkeyideal
        69
    xkeyideal  
       2018-08-02 11:03:36 +08:00
    ruby 就是垃圾,ruby 的世界能称得上成功的项目只有 github
    adablue77
        70
    adablue77  
       2018-08-02 13:15:31 +08:00
    去招聘网站看看就知道了 不同薪资的精通 定义是不同的 常见的精通就是能干活
    msg7086
        71
    msg7086  
       2018-08-02 14:06:07 +08:00
    @wupher 是啊,但是不管怎么说,初创公司还是要先搭起 POC 才能拿到投资向上发展。
    最近几年新语言新架构层出不穷,倒的确是带来了很多新选择。

    不过我还是不舍得放弃 Ruby。写代码写起来实在是太舒服了。
    toaoman
        72
    toaoman  
       2018-08-02 17:59:50 +08:00
    也就是能解决问题而已,精通?有意义吗?
    itgoyo
        73
    itgoyo  
       2018-08-03 10:49:24 +08:00
    请问这里有人精通 C++嘛?没有的话我过几年再回来问。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1250 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:58 · PVG 07:58 · LAX 15:58 · JFK 18:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.