关于编程语言的掌握层次大家是怎么定义的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leetao94
V2EX    问与答

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

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

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

    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/div>
    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
    比面试官懂得多就是精通/div>
    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 &nbs;
       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 实战》即将上市了]( 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
    R4rvZ6agNVWr56V0
        46
    R4rvZ6agNVWr56V0  
       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     Solana     5807 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 03:07 PVG 11:07 LAX 20:07 JFK 23:07
    Do have faith in what you're doing.
    ubao 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