V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
leetao94
V2EX  ›  问与答

关于编程语言的掌握层次大家是怎么定义的?

  •  
  •   leetao94 · 2017-04-22 09:17:37 +08:00 · 5266 次点击
    这是一个创建于 2768 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如说,了解,熟悉,精通?达到什么层次算是熟悉或者算是精通?

    49 条回复    2017-04-23 06:51:38 +08:00
    leetao94
        1
    leetao94  
    OP
       2017-04-22 09:18:58 +08:00
    我觉得很多新人对这个问题都有困惑吧~~望大佬们可以解惑一下~~
    Monad
        2
    Monad  
       2017-04-22 09:22:44 +08:00   ❤️ 4
    了解:知道语法和怎么写 Hello, World
    熟悉:工作中能够用它干活
    精通:使用过程中极少出现语言层面(而不是库函数)你不明确的地方
    leetao94
        3
    leetao94  
    OP
       2017-04-22 09:25:58 +08:00
    @Monad 这样子说来,其实有一定的实践能够独立完成几个项目,就可以算的上熟悉了吗~~
    murmur
        4
    murmur  
       2017-04-22 09:26:33 +08:00
    精通至少得是读过部分源代码 了解很多技术细节才敢说精通吧
    wayslog
        5
    wayslog  
       2017-04-22 09:27:20 +08:00 via Android
    了解:知道某语言优缺点。
    熟悉:能用这种语言的写法写出正确的而且流畅的代码,以及至少完成一个项目(大小不限)
    精通:无外乎三点,本技术领域著名人才(Linus 之于 C ,轮子之于 C++, R 大之于 JVM),本语言创始人或者主力开发维护者(BS 之于 C++),本明星项目开发者。

    个人浅见…希望其他人补充,不指望说服别人。
    leetao94
        6
    leetao94  
    OP
       2017-04-22 09:27:25 +08:00
    @murmur 哈哈~所以新人应该更加关注达到什么程度可以在简历上说熟悉 xx 语言~~熟悉 xx 框架
    Monad
        7
    Monad  
       2017-04-22 09:28:02 +08:00
    @leetao94 #3 你用 XX 语言都能独自完成项目 个人觉得肯定可以算熟悉
    leetao94 这是本科生毕业生在写简历?
    leetao94
        8
    leetao94  
    OP
       2017-04-22 09:29:27 +08:00
    @Monad 并不是~~这是长期已久的困惑,今天忍不住冒泡问问了~~哈哈~
    murmur
        9
    murmur  
       2017-04-22 09:41:00 +08:00
    @leetao94 java 和 c++这种超大语言熟悉都不敢写。。不是还有个掌握么。。
    leetao94
        10
    leetao94  
    OP
       2017-04-22 09:42:41 +08:00
    @murmur 是的~~java 和 c++写熟悉都感觉心虚的不行~~
    visonme
        11
    visonme  
       2017-04-22 09:48:13 +08:00
    了解: 算是入门吧,语言的基础,作用范围,能写简单的 demo
    熟悉: 在工作中没有使用语言的障碍(如果有也应该多发在技术层面)
    精通: 这应该算是脱离语言层面了,已经能从底层去优化,改造语言了(或者说 hack )

    个人的理解,仅仅在语言层面谈论。
    AngelCriss
        12
    AngelCriss  
       2017-04-22 09:54:35 +08:00 via Android
    @wayslog 轮子???幻之上帝啊喂!
    AngelCriss
        13
    AngelCriss  
       2017-04-22 09:55:49 +08:00 via Android   ❤️ 1
    没人能精通 C++,所以没有精通这个层次。
    loy6491
        14
    loy6491  
       2017-04-22 09:58:21 +08:00 via iPhone
    比面试官懂得多就是精通
    otakustay
        15
    otakustay  
       2017-04-22 10:08:38 +08:00
    觉得不怎么懂就说了解,觉得自己很牛就写熟悉,打死不写精通
    leetao94
        16
    leetao94  
    OP
       2017-04-22 10:10:57 +08:00
    @loy6491 这个就看运气了吗~~哈哈
    leetao94
        17
    leetao94  
    OP
       2017-04-22 10:11:49 +08:00
    @otakustay 这样子觉得自己懂了一点,就不是很牛,可以写掌握了
    leetao94
        18
    leetao94  
    OP
       2017-04-22 10:13:13 +08:00
    @visonme 其实感觉没有使用语言的障碍界定的很模糊啊
    sagaxu
        19
    sagaxu  
       2017-04-22 10:15:32 +08:00
    月薪 1 万就是了解, 2 万到 5 万就是熟悉, 5 万以上就是精通
    leetao94
        20
    leetao94  
    OP
       2017-04-22 10:16:37 +08:00
    @sagaxu 这个实在~~这个月薪是一线城市的还是?
    libook
        21
    libook  
       2017-04-22 10:21:44 +08:00
    了解:花十五分钟去搜百科、官方文档和介绍文章,搞清楚这个语言是什么、发展历史、什么特性、适用于哪些情景、目前的火热程度。
    入门:花一两天看官方入门教程,或者搜搜大牛写的入门教程,配好环境写一个包含输入输出、判断、循环等简单编程语法的程序。
    掌握:花一周到两周的时间尝试使用一些高级特性,如网络通信、面向对象(如果是 OO 友好语言的话)、二进制操作、文件操作、至少一种数据库操作、常用库|包|模块|插件、简单的 UI (如果具备 UI 特性的话)。
    熟练:做过项目。
    精通:熟悉底层机制、性能优化、栈内技术选型、架构规划等。
    misaka20038numbe
        22
    misaka20038numbe  
       2017-04-22 10:43:05 +08:00
    了解,看过入门书前几章。
    熟悉,能实现需求。
    精通,明白了这个语言是怎么实现出来的。
    scnace
        23
    scnace  
       2017-04-22 10:45:10 +08:00 via Android
    不要说精通 除非你把源码都看了一遍…
    elvodn
        24
    elvodn  
       2017-04-22 11:00:51 +08:00   ❤️ 1
    初级: 看完教程->可以写一些简单逻辑;
    中级: 阅读完语言规范,不会出现语言使用级别 BUG->可独立完成小型项目(10k-);
    高级: 熟练掌握语言优缺点,精通官方库并了解常用第三方库->拥有使用该语言完成中型项目(50k+)的经验;
    专家级: 熟读语言与官方库源代码,掌握大量第三方库的使用与优缺点->设计并主导以该语言为主的大型项目(100k+)的研发;
    大师级: 对于这个语言已经没有什么未知之处了->参与语言的研发,提交语言提案;
    宗师级: 大量提案被采纳->在语言研发项目组获得崇高地位;
    禅师级: 您用有对该语言的最终解释权;
    billlee
        25
    billlee  
       2017-04-22 11:30:27 +08:00
    了解:知道基本语法,能使用,不出现语义使用上的 bug.
    熟悉:知道全部语法、常用标准库的优缺点和适用场景,能写出符合该语言的风格习惯的代码。
    精通:知道语言和常用标准库的实现机制,能在做 profiling 之前避开大部分性能问题。
    phrack
        26
    phrack  
       2017-04-22 11:32:55 +08:00
    完了,我简历上写的精通 python ,我得去改成熟悉。
    leetao94
        27
    leetao94  
    OP
       2017-04-22 11:34:16 +08:00
    @phrack 哈哈~~
    wayslog
        28
    wayslog  
       2017-04-22 11:36:36 +08:00
    @AngelCriss 帝球知名度明显不如轮子嘛。。。
    Lispre
        29
    Lispre  
       2017-04-22 11:39:19 +08:00
    能用一门语言挣到大钱就是我对精通的唯一评价,也许你会觉得我这回答如同放屁,那我也没话多说。社会价值决定一切。
    nealfeng
        30
    nealfeng  
       2017-04-22 11:46:50 +08:00
    @Lispre 社会价值 不完全等于 挣到大钱

    人类历史上和现在,那些为科学和技术发展做出贡献的,很多并没有挣到大钱
    iyaozhen
        31
    iyaozhen  
       2017-04-22 11:57:54 +08:00 via Android
    反正来面试的写精通 Java 的都死的很惨。
    面试官:“这小伙子牛逼呀,先从 jvm 开始问吧”
    lmqdlr
        32
    lmqdlr  
       2017-04-22 13:16:20 +08:00 via Android
    踩坑>挖坑>填坑
    di94sh
        33
    di94sh  
       2017-04-22 13:29:21 +08:00 via Android
    熟悉:可以查看帮助文档进行不熟悉部件使用,懂的大部分基础优化方法。对一套系统,比如 Linux 上的编程接口使用熟练,不长使用的可以查看文档,或者示例解决 。
    精通:不懂,我正在往熟练道路上前行。。。
    UnisandK
        34
    UnisandK  
       2017-04-22 13:43:32 +08:00   ❤️ 1
    看 C 是 C
    看 C 不是 C
    看 C 还是 C
    cankoor
        35
    cankoor  
       2017-04-22 14:05:12 +08:00
    我正在写一个 PHP 进阶教程,顺便自己加深 PHP 的了解。

    据我的理解,初级应该是给你一个功能需求,你能够独立实现,但是不考虑代码质量和性能。这个阶段应该很容易达到,但是从初级到中级很多人就会很迷茫。

    中级应该开始考虑代码质量以及性能,同时能够熟练运用标准库中的东西。在熟悉语言的同时要开始了解业界使用的开发工具和开发流程,比如包管理,代码测试,持续集成等。还要学习语言的各种扩展,掌握其中几种重要的扩展,比如 session 。同时要开始着手了解语言的底层,比如垃圾回收机制等。

    高级应该了解语言的底层,熟悉语言是如何实现的。这时候应该不会拘束于语言之中,而是举一反三,在学习其他语言的时候都能够很快精通。这时候他们应该更加关注的是大规模的架构和性能吧。我没到这种阶段,所以我也不了解。

    以我自身的体会,从初级到中级这个过程式非常漫长的。这里涉及到开发流程、开发工具和重要知识点提炼等,如果没有一个专业的前辈来引导的话,这个过程会很迷茫,而且很多时间浪费在该学习什么(寻找必要知识点)上面。

    所以我在写这样一份进阶教程,但是由于自己能力有限,所以很多方面写的不好,到时候我应该会开源出来,希望广大站友一起协作完成这份教程 :).
    conwey
        36
    conwey  
       2017-04-22 14:16:05 +08:00 via Android
    这贴让我想到四大编程魔神
    hepin1989
        37
    hepin1989  
       2017-04-22 14:29:18 +08:00
    对于编程语言,我的建议是学习,不要只是学习语法,而是学习作者对于这个世界的问题域的思考,也就是范式。

    建议您学习的语言:

    Clojure Scala Elixir Erlang Java Golang

    [《 Netty 实战》即将上市了]( https://www.v2ex.com/t/356574)
    uuair
        38
    uuair  
       2017-04-22 15:01:00 +08:00
    我觉得最高级就是随心所欲的写要写的东西吧。。。何必纠结这些过程呢,语言不就是一个东西么?就跟上床需要的那张床一样,只是工具而已。。
    Antidictator
        39
    Antidictator  
       2017-04-22 16:04:26 +08:00 via Android
    @conwey 魔道
    shijingshijing
        40
    shijingshijing  
       2017-04-22 17:51:08 +08:00
    精通 --- 我觉得至少要了解到编译器级别,知道这一门语言的各种特性和语法,以及在汇编(机器)级别上的实现。

    当然最上面应该还有个 founder 级别的,开宗立派的那个级别。
    whileFalse
        41
    whileFalse  
       2017-04-22 18:31:00 +08:00   ❤️ 1
    当我要面试别人的时候,看到简历中写着:
    了解 -> 你不具有使用该语言解决生产问题的能力,我不会问你任何有关问题。
    熟练 -> 你能熟练使用该技能进行生产,并理解该语言的一部分高级特性,能够使用这些特性优化你的程序。我会问你使用该语言的时候用了哪些高级特性?语言有哪些坑,怎样避免踩坑。
    精通 -> 你应该能回答我提出的所有该领域相关问题,或者能向我展示你使用过该语言的何种高级技巧,解决了什么问题。如果你在我的问题上卡壳了,我会因此给你一个负面评价。

    我觉得比了解熟练精通更合适的描述是,你用某种语言 /某项技术做了什么。

    我的简历,如果特意强调语言的话,会是这么写:

    使用 Java 和 JS 为前后端程序员编写运维库。包含基于 UDP 组播的局域网服务发现等功能。 JS 使用了多种 ES6/7 特性。
    使用 Go 实现了基于配置文件的 RESTful API 网关,支持请求合并、条件分支等功能。
    使用 Python 撰写大部分运维脚本

    实际上这几种语言我连语法都不熟悉,经常要上网搜语法。然而我能用他们解决生产问题。

    当然了,我的简历肯定不会强调语言了。
    FunctionOne
        42
    FunctionOne  
       2017-04-22 20:25:25 +08:00
    把所有的坑踩一遍应该就好了。
    leetao94
        43
    leetao94  
    OP
       2017-04-22 21:27:13 +08:00 via iPhone
    @whileFalse 看你的回答,我觉得以后写简历有谱了
    loading
        44
    loading  
       2017-04-22 21:28:49 +08:00 via Android
    我业余水平,所以我一般用:
    听说过,了解,略懂。
    luoqeng
        45
    luoqeng  
       2017-04-22 23:42:44 +08:00
    Asking questions on the newsgroup/mailing list
    Asking good questions on the newsgroup/mailing list
    Answering questions
    Paid to write code in that language
    Written 10k lines of code in the language
    Written a compiler for the language
    Written an optimizing compiler
    Written a book on the language
    Participated on the standards committee
    Written the book on the language.

    https://www.quora.com/How-do-I-understand-my-level-in-programming-language
    GeekGao
        46
    GeekGao  
       2017-04-23 00:05:31 +08:00
    个人浅见:
    了解:对于有些语言特性只是知道但是项目中没有实际使用过
    熟悉:对于所知语言特性都有代码实践过
    精通:对语言特性、规范、存在意义或历史都可以谈自己的见解,对常见的优化手段和坑可以头头是道的讲出口。
    acros
        47
    acros  
       2017-04-23 00:14:07 +08:00
    了解: 在这个公司能做业务逻辑(可能需要人带着)
    熟悉:拿到老大的任务可以独立完成
    精通:部门其他人不会修的 bug 你会,做出来产品稳定性比他们好,开发速度更快。
    lrxiao
        48
    lrxiao  
       2017-04-23 00:21:03 +08:00
    做 PLT 的怎么分(
    iwyvi
        49
    iwyvi  
       2017-04-23 06:51:38 +08:00 via Android
    看到就是半血,摸到就是一丝
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1873 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:34 · PVG 00:34 · LAX 08:34 · JFK 11:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.