V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wudanyang
V2EX  ›  程序员

看的黑客与画家想学 lisp,但是在拉勾上没有找到 lisp 相关的职位。

  •  
  •   wudanyang ·
    wudanyang6 · 2016-03-02 15:52:02 +08:00 · 9197 次点击
    这是一个创建于 3193 天前的主题,其中的信息可能已经有所发展或是发生改变。
    那么问题来了,到底学习 lisp 能干什么呢?俗话说,白猫黑猫会抓老鼠的就是好猫。 lisp 只是一只好看点儿的猫吗?
    第 1 条附言  ·  2016-03-03 10:38:32 +08:00
    楼主刚出道,轻喷
    73 条回复    2016-03-05 22:52:40 +08:00
    asj
        1
    asj  
       2016-03-02 16:09:31 +08:00   ❤️ 23
    前两天看到一篇文章说,很多参加音乐真人秀的选手都会说“我的梦想是成为一名歌手”,但是从没有人说他梦想唱歌。想要成为歌手的人会参加比赛,希望从别人那里获得认可。想要唱歌的人直接就去唱了,他在唱的过程中就得到了满足。
    那么你是想成为 lisp 程序员,还是想写 lisp 呢?
    movtoy
        2
    movtoy  
       2016-03-02 16:16:48 +08:00
    你看到作者学 lisp ,所以你想学。

    难道你没看到人家学了是创业当老板的?

    而你学了是想找工作的,所以,级别差太多,否!
    xcodebuild
        3
    xcodebuild  
       2016-03-02 16:17:48 +08:00 via Android
    写 emacs 插件,另, clojure 职位应该是有的
    jsonline
        4
    jsonline  
       2016-03-02 16:25:56 +08:00 via Android
    国内只有一个 lisp 团队吧?
    codecrash
        5
    codecrash  
       2016-03-02 16:28:18 +08:00
    @jsonline 求介绍是哪一个团队
    sudoz
        6
    sudoz  
       2016-03-02 16:30:38 +08:00   ❤️ 1
    那你还不如去学 Ruby
    jsonline
        7
    jsonline  
       2016-03-02 16:32:27 +08:00 via Android   ❤️ 3
    bramblex
        8
    bramblex  
       2016-03-02 16:33:50 +08:00
    lisp 是一门挺简单的语言,学会用又花不了多少时间……

    当兴趣爱好学一下不可以么?
    levn
        9
    levn  
       2016-03-02 16:40:52 +08:00
    语言表现能力强不代表它会自动让你懂得各种领域知识啊……
    pepsin
        10
    pepsin  
       2016-03-02 16:41:35 +08:00
    学拉丁语是为了更好的了解其他语言脉络.

    Lisp 或者别的什么也都是一样.

    会啥就要拿啥工作那你基本上告别黑客与画家那条路了.
    pepsin
        11
    pepsin  
       2016-03-02 16:43:21 +08:00
    另外, 真要 Lisp 工作. 有两家公司, 高盛和顽皮狗, 但是他们的 Lisp 都是给不怎么会编程的人搞脚本的, 正式程序员几乎免不了要求你高破天的 C++ 或者 C 经验以及足够的系统或者图像方面的经验.
    louirobert
        12
    louirobert  
       2016-03-02 16:44:42 +08:00
    如果你只是对函数式编程感兴趣不妨看看 Lua ,至少从找工作的角度来讲更广泛一些
    bramblex
        13
    bramblex  
       2016-03-02 16:46:45 +08:00
    @louirobert

    那还不如看看 js 呢……
    bramblex
        14
    bramblex  
       2016-03-02 16:51:59 +08:00
    @louirobert 如果你说的是看 lua 解释器源码,那我收回上面的话。 Lua 解释器源码确实非常值得看
    lmshl
        15
    lmshl  
       2016-03-02 17:14:00 +08:00   ❤️ 2
    国内应该搜 clojure ,不过国内用 clojure 的团队非常少。想学的话把《 SICP 》看一遍,课后题通刷,对人编程思想训练很有帮助。就算以后不靠 lisp 或其方言吃饭,也不会饿死。
    fszaer
        16
    fszaer  
       2016-03-02 17:21:18 +08:00
    @bramblex

    js 就算了吧,仅仅是可以函数式而已
    jiyinyiyong
        17
    jiyinyiyong  
       2016-03-02 17:43:25 +08:00
    Clojure 中文社区欢迎楼主~
    论坛 http://clojure-china.org
    微博 http://weibo.com/clojurechina
    QQ 130107204

    Lisp 是早期开发出来的语言, 为了以贴近理论的方式进行编程.
    到了 Scheme 已经越来数学化, 工业当中使用的人远远不如 C 风格和脚本语言来得多.
    不过 Clojure 还是可以玩玩的. 做的事情和一般语言差不多, 但是抽象能力更高..也许太高..
    znoodl
        18
    znoodl  
       2016-03-02 18:16:06 +08:00 via iPhone
    Lisp 的更新版不是叫 Ruby 吗?
    bramblex
        19
    bramblex  
       2016-03-02 18:43:44 +08:00 via Smartisan T1
    @fszaer

    js 的函数式在主流语言中已经很好了好不…

    不然你们来学 haskell 啊…你们又不学
    jsyangwenjie
        20
    jsyangwenjie  
       2016-03-02 18:47:38 +08:00
    你学语言只是为了找工作么?
    islandev
        21
    islandev  
       2016-03-02 18:51:56 +08:00
    学语言 其实就是好玩,熟悉一下 思想 ,为了工作去学 太蛋疼了
    bramblex
        22
    bramblex  
       2016-03-02 18:57:50 +08:00 via Smartisan T1
    @fszaer

    我的博客程序都是拿纯函数式语言写的,我安利纯函数式语言你们吃么?
    ffffwh
        23
    ffffwh  
       2016-03-02 19:03:01 +08:00 via Android
    学通了可以去写 C++
    crabRunning
        24
    crabRunning  
       2016-03-02 19:26:50 +08:00
    erlang/elixir 好点,不过 elixir-china 基本没什么人.
    yemenchun1
        25
    yemenchun1  
       2016-03-02 19:28:46 +08:00 via iPhone
    Lisp 的方言 Scheme (+ 255 65535 (* 192 168) 2016) 看得我直眼晕…
    swsh007
        26
    swsh007  
       2016-03-02 19:35:59 +08:00
    全 china 找不到几个用 lisp 编程的。
    hackege
        27
    hackege  
       2016-03-02 19:38:31 +08:00
    可以学 clojure , jvm 的动态语音,语法跟 lisp 一样
    hitmanx
        28
    hitmanx  
       2016-03-02 19:43:53 +08:00
    erlang 有不少职位吧,我上家公司一个大部门全是用 erlang 的..
    Reficul
        29
    Reficul  
       2016-03-02 20:06:09 +08:00 via Android
    @yemenchun1 波兰表达式,其实还好。 lisp 的黑点是括号反人类,另外 vim 下面开发环境不好搭建。
    @bramblex haskell 咩?膜拜大神,开源咩?
    bramblex
        30
    bramblex  
       2016-03-02 20:29:54 +08:00
    @Reficul

    然而并不是 Haskell ,本来打算后端用 Haskell 写, 前端用 PureScript 写的。但是由于我的 vps 配置太低,跑不起来 ghc ,所以就全栈 PureScript 了。

    博客 : http://lovearia.me
    Github : https://github.com/bramblex/loveaira.me
    fszaer
        31
    fszaer  
       2016-03-02 22:21:06 +08:00
    @bramblex
    我看到了啊=。=
    但是我是说的是原生 js 嘛,
    而且我是说可以函数式就是说可以类似 PureScript 那样用啦=。=
    不过说到这个我想起这篇文章,把我看得一愣一愣的
    http://jimliu.net/2015/10/21/real-functional-programming-in-javascript-1/
    bombless
        32
    bombless  
       2016-03-02 22:35:07 +08:00 via Android
    common lisp 还真不简单,应该说非常复杂,要啥特性有啥特性
    bramblex
        33
    bramblex  
       2016-03-02 22:36:43 +08:00
    @fszaer

    看看这个才知道不是语言的差距,是人的差距。看看人家怎么用 JavaScript 玩 Functor, Monad, Applicative Functor 的吧……

    https://llh911001.gitbooks.io/mostly-adequate-guide-chinese/content/ch1.html
    fszaer
        34
    fszaer  
       2016-03-02 22:56:07 +08:00
    @bramblex
    已阅过了,然后我一直在等第 11 章,前面的一些简单的 curry 之类内容我也在项目中有尝试应用,
    配合 es6 感觉还是蛮不错的
    不过看完才发现,我对这方面实在理解不够,于是现在拿着 sicp 在啃啊
    fszaer
        35
    fszaer  
       2016-03-02 22:56:48 +08:00
    @bramblex
    话说为什么我一直收不到回复提示......
    lululau
        36
    lululau  
       2016-03-02 23:05:11 +08:00
    玩玩 Emacs , elisp 是目前最实用的了
    faywong8888
        37
    faywong8888  
       2016-03-02 23:28:09 +08:00
    我之前用 clojure 写过一些爬虫,还有公司内的一个开发者网站。感觉 lisp 还是挺好的一门语言,有很多我喜欢的特性。
    ainimuyan
        38
    ainimuyan  
       2016-03-02 23:44:42 +08:00
    看完等于白看了
    BOYPT
        39
    BOYPT  
       2016-03-02 23:53:22 +08:00
    这个想法真是白看这本书了
    楼主还是去工作个五六年后再重新读吧
    EthanZhu
        40
    EthanZhu  
       2016-03-03 04:02:45 +08:00 via Android
    同意 ls lss 多看几遍吧
    nicevar
        41
    nicevar  
       2016-03-03 08:39:10 +08:00
    哈哈,楼上几位打击的,不过确实是白看了,楼主理想主义者
    jimmy8chu
        42
    jimmy8chu  
       2016-03-03 08:51:11 +08:00
    leancloud. cn. 他们就是用 clojure 的
    asxalex
        43
    asxalex  
       2016-03-03 08:57:53 +08:00   ❤️ 1
    lisp 是一种信仰
    wizardforcel
        44
    wizardforcel  
       2016-03-03 08:59:05 +08:00 via Android   ❤️ 1
    很明显作者在过度吹捧 lisp 。 lisp 开发效率高?函数式语言是公认的学习困难。要不然 OO 怎么会成为不成文的标准。实际上,各种 OO 语言发展到现在都有了无比丰富的生态, lisp 能干啥?
    MrFinch
        45
    MrFinch  
       2016-03-03 09:29:35 +08:00   ❤️ 1
    屠龙之技厉害,奈何龙少
    iamxi
        46
    iamxi  
       2016-03-03 09:32:57 +08:00
    @wizardforcel OO 和函数式编程都只是一种思维方式而已。哪个更好,现在谁也说不好。不能保证面向对象就真的是提高了效率。如果真的难学,又效率低下,那为什么有这么多语言要往函数式这块发展呢。
    robertlyc
        47
    robertlyc  
       2016-03-03 09:40:20 +08:00
    javascript,ruby 都可以看做 lisp 的遗产
    wizardforcel
        48
    wizardforcel  
       2016-03-03 09:43:11 +08:00   ❤️ 1
    @iamxi 一般说到“函数式语言”指的是纯函数式语言,你会把 js 当成函数式吗?脚本语言的确把函数作为 first-class ,但不妨碍其 OO 的主体部分。

    OO 是不成文的标准,这个是显而易见的。无论是企业项目,还是 github 上的项目,都封装成对象的形式,而不是高阶函数(闭包套闭包)的形式。以对象为主体,闭包用作辅助,可以提升效率。但是纯函数式语言的闭包套闭包,实在是恶心。

    在作者写书的那个年代,绝大多数命令式语言都没有闭包这个东西,不够灵活。现在不少命令式语言吸收了闭包,纯函数式语言也就没有用武之地了。看看 TIOBE 的排行榜就知道了。
    chuan
        49
    chuan  
       2016-03-03 09:51:45 +08:00
    可以看看 Racket ,属于 Lisp-Scheme family , https://racket-lang.org/
    iamxi
        50
    iamxi  
       2016-03-03 10:17:37 +08:00   ❤️ 1
    @wizardforcel 面向对象的中的对象,本来就是对现实事物的抽象,但不是只要把东西都看成对象了就是 OOP 了。 restful 中的资源也可以看成对象。但确实不能说 restful 的接口都是 OO 的吧。现在来说 REST 不是一种规范吗。谁说都通过 OO 的封装了。封装是 OOP 的一部分,但是模块化的实现就不止 OO 一种。 windows 和 linux 提供的接口时候可没告诉我接口是哪个类下面的。

    而且 OOP 和函数式并不冲突,要不然 python 怎么做到的完全基于面向对象,还能写出函数式的代码。从大教堂和集市中可以看到, C 之所以取代了 lisp ,完全是因为 C 的移植能力好。如果历史是 lisp 更易移植,恐怕现在的操作系统是 lisp 写的了。

    函数式提供的是数学抽象,相比, OO 提供的抽象更容易让人理解,这也是为什么现在 OO 大行其道的原因。我没说哪个更好。我是一个 JAVA 程序员,学了 python 后发现,原来那些设计模式都 TM 是为了避免 JAVA 开发中一些弊端。学了 lisp 才发现,原来一个算法可以表达的如此完美,哪些什么类,什么对象,都可以去死了。
    wizardforcel
        51
    wizardforcel  
       2016-03-03 10:29:54 +08:00
    @iamxi

    你说的是狭义的 OOP 。然而 OO 的模式不仅仅只有基于继承那一种。比如 JS 是基于原型链的 OO , Golang 是基于组合的 OO 。你说的 linux ,如果你看过源码的话,它采用的是基于组合的 OO 。那些 struct 中的函数指针就是实现多态的途径。

    linux 和 win32 的 api 以函数粒度封装,应该是历史因素。你看最新的 winRT api ,就是以类的形式封装的。
    tabris17
        52
    tabris17  
       2016-03-03 10:33:00 +08:00   ❤️ 2
    哪有学会一门语言就出门找工作的,你以为是 PHP 啊
    raawaa
        53
    raawaa  
       2016-03-03 12:21:52 +08:00
    @jsonline 那期听过,另外田春巨巨好像去意大利留学了,期间还跟老婆离了婚。这些八卦的真实性不知。
    Rothschild
        54
    Rothschild  
       2016-03-03 12:40:29 +08:00
    @pepsin lisp 在工业界当脚本用处多了,机械设计 AutoCAD 就有用 AutoLISP
    bramblex
        55
    bramblex  
       2016-03-03 13:15:46 +08:00
    看到楼上几个业余的在讨论函数式,真心觉得蛋疼……
    vincenttone
        56
    vincenttone  
       2016-03-03 13:36:07 +08:00
    首先, lisp 不是纯函数式语言,因为有 define 和 let 这种允许变量的存在。反而 erlang 不存在变量。
    第二, lisp 可以 OO ,实现上是通过 let 来保持内部状态的。而 let 是通过 lambda 来实现的。 define 也只是一个 hash 而已。
    OO 只是一种模式,目的还是抽象, lisp 的基础允许这种抽象。
    确实, lisp 的部分问题在于语法上,或许是这个问题导致了受众小,相关应用库少,推广不容易。

    现在确实实际应用上 lisp 很少,貌似 auto cad 用到 lisp (未考证), emacs 扩展是用的 elisp 。
    我觉得现在除了传说中人工智能偏好 lisp (未考证), lisp 更多是帮助人理解编程,相关书籍可以参考 sicp 。
    黑客与画家这书上对 lisp 的肯定是属于作者那个年代的,我们没必要刻舟求剑。除了很 NB 的宏,其他语言也在慢慢借鉴函数式编程方法,比如 lambda 、 map 、闭包等等。
    lisp 的函数式编程对后续的函数式编程语言影响自己是很大的,但是 erlang 、 closure 等语言火的原因和并发编程有关(未考证),这已经是近期的事情了。
    楼主既然是为了工作,建议选个热门且自己真正喜欢的, lisp 可以作为提高技能的手段。

    个人意见,不建议作为参考。
    a68UkLHpycW7ImyV
        57
    a68UkLHpycW7ImyV  
       2016-03-03 15:11:09 +08:00
    拉钩,呵呵。
    任何一个招聘网站的成功率都比拉钩高,而且不是一般的高。
    SrvenX
        58
    SrvenX  
       2016-03-03 16:32:54 +08:00   ❤️ 1
    学习 LISP 语言的思路比 LISP 本体好的多吧,而且作者本来也是这个意思。
    那本书我也有看过,当时对我启发很大。
    wowpanda
        59
    wowpanda  
       2016-03-03 18:49:40 +08:00
    @wlbcs 还有哪些比拉钩成功率高的?感觉拉钩好多都是几十个人的小公司啊
    lostpupil
        60
    lostpupil  
       2016-03-03 22:35:25 +08:00
    Lisp 能屠龙
    hbkdsm
        61
    hbkdsm  
       2016-03-03 23:02:53 +08:00 via Android
    建议 Ruby ,同时 JS 防身
    jings
        62
    jings  
       2016-03-03 23:30:58 +08:00
    请允许我 233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
    TangMing
        63
    TangMing  
       2016-03-04 08:36:29 +08:00 via iPhone   ❤️ 1
    @vincenttone AutoCAD 二次开发用 lisp , autolisp
    以前在设计院画图时候经常拿来帮助画比较恶心的图形
    moonranger
        64
    moonranger  
       2016-03-04 10:42:57 +08:00   ❤️ 1
    看到楼主的问题,我突然想到了 Paul Graham 写过的一篇名叫 《 Python 悖论》的文章: http://paulgraham.com/pypar.html

    从里面摘一段:

    And for programmers the paradox is even more pronounced: the language to learn, if you want to get a good job, is a language that people don't learn merely to get a job.

    所以我觉得没必要纠结有没有 Lisp 相关的工作,学就是了,你一定会从中收获很多的——即使你以后没法在工作中用 Lisp 。
    random2case
        65
    random2case  
       2016-03-04 11:44:29 +08:00
    rust 和 scala 吧,都挺好的,支持函数式编程
    zhizhongzhiwai
        66
    zhizhongzhiwai  
       2016-03-04 13:21:24 +08:00
    lisp 不仅是函数式编程语言,他还有个目前其他语言没有的能力: runtime macro. 没有听过这个单词的人,就不要说自己了解过 lisp 。明白的人顶起!!

    http://www.rsyslog.com/doc/v8-stable/configuration/modules/idx_output.html
    zhizhongzhiwai
        68
    zhizhongzhiwai  
       2016-03-04 13:23:54 +08:00
    lisp 的 macro 不是为那些智商普通的人准备的。 哈哈
    bramblex
        69
    bramblex  
       2016-03-04 14:08:06 +08:00
    @zhizhongzhiwai

    来写写 Haskell , Haskell 整个语言都不是给智商普通的人准备的咯?
    a68UkLHpycW7ImyV
        70
    a68UkLHpycW7ImyV  
       2016-03-04 18:15:43 +08:00
    @wowpanda 猎聘、 51job 都不错。
    智联不行,中华英才不行,拉钩就是个笑话。
    wudanyang
        71
    wudanyang  
    OP
       2016-03-04 21:28:26 +08:00
    @wlbcs 拉勾为何不行?
    a68UkLHpycW7ImyV
        72
    a68UkLHpycW7ImyV  
       2016-03-04 22:25:57 +08:00
    @wudanyang 拉勾上投过的简历要么没反应,要么跟职位特别不符合。
    而在猎聘和 51job 挂的简历,一天下来电话有 20 个左右,正常情况下面试都是安排不完的。
    猎聘上都是第三方猎头找你,质量也参差不齐,介绍的工作,大中小公司都有。
    51job 上一般是公司的人事直接打电话给你,质量还可以。
    wudanyang
        73
    wudanyang  
    OP
       2016-03-05 22:52:40 +08:00
    @wlbcs 刚出来找工作的时候就是用的拉勾,如果你说的是真的,那么拉勾还差了一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1374 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:39 · PVG 01:39 · LAX 09:39 · JFK 12:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.