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

对于程序员来讲工作外的编程需求如何寻找呢?

  •  
  •   dodng12 · 2019-12-18 17:58:25 +08:00 · 2843 次点击
    这是一个创建于 1808 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我坐标北京,写代码有 7 年了,自认为实现某一功能或基于开源东西修改完成需求问题不大,可是除了工作
    上需求之外,如何自己主动去寻找写代码要实现什么功能呢?

    举例:redis 的那个长头发的作者是怎么想到要把这件事单拎出来开源的呢。。。?
    26 条回复    2019-12-20 09:18:02 +08:00
    crella
        1
    crella  
       2019-12-18 19:21:37 +08:00 via Android
    我有一个属于个人的非营利性的需求。非 it 专业。

    我看过 python3 的 pandas,好像没有自动更新单元格的说法,对应 Excel 的自动重算工作簿功能。

    所以我现在需要一个:后端:具有 excel 基本文本函数、基本计算函数、基本统计函数的功能;具有自动重算表格的功能、自定义变量和函数的功能。前端:简单的网页或者 qt windows 程序都可以。

    之所以有这个需求,因为之前处理数十万行表格,wps 稍微力不从心而且内存占用 2G 多;看不惯 vba 语法;因为经常要更改公式和判断逻辑,又不愿意用 Excel 高版本的数据库函数来写公式:最后竟然是手写 vb.net 程序来加工的。读取 csv,生成结果到 csv,.net 4+g4560 单核要一分多钟时间。

    那个需求的语法呢,尽量简单。

    现在稍微实现了一些很简单的计算功能,感慨实在是太难了。自动重算工作簿还没想好怎么搞。
    crella
        2
    crella  
       2019-12-18 19:25:25 +08:00 via Android
    excel 虽然很强大,但是不少函数存在不人性化的地方(自我感觉)。因为常用的编程语言,返回结果可以是数组、哈希、单变量等等,但是 excel 返回的结果基本都是按单元格来存放。

    还有 excel 的多层条件判断,几个括号叠起来实在太恶心…… 处理 vlookup 和 iferror,加上各种 offset、indirect,还有函数之王的 sumproduct 和 mmult……这些其实用常用的脚本语言来处理,绝对比 excel 的方式更好理解。
    crella
        3
    crella  
       2019-12-18 19:31:41 +08:00 via Android
    现在是往 dsl 的方向去考虑,比如用 python 或 lua 作解析器,那么类 excel 功能的语法也按 python 或 lua 的语法来设计。……
    wangkai0351
        4
    wangkai0351  
       2019-12-18 19:31:55 +08:00
    你这个编程需求要不要和钱产生关联?要和什么产生关联?换句话说,是什么导向的需求?
    magicluna01
        5
    magicluna01  
       2019-12-18 19:36:19 +08:00
    自己做产品经理~
    dodng12
        6
    dodng12  
    OP
       2019-12-18 19:43:08 +08:00
    @wangkai0351 有兴趣和当作事业去做吧,反馈可以是用户的信任和认可,并不一定是钱。
    dodng12
        7
    dodng12  
    OP
       2019-12-18 19:44:04 +08:00
    @crella 我看好你哦,有些东西看起来简单,做起来麻烦不断
    dodng12
        8
    dodng12  
    OP
       2019-12-18 19:45:29 +08:00
    @magicluna01 产品经理首先也得先想到做一个产品吧,尝试过解决生活中的痛点问题,但是感觉不明显啊,有种只缘身在此山中的错觉
    wangkai0351
        9
    wangkai0351  
       2019-12-18 19:50:48 +08:00
    @dodng12 这个东西要和事业和用户反馈沾边啊,那怪不得你想不出来呢,这个东西一开始背负的压力够大的。
    crella
        10
    crella  
       2019-12-18 19:58:39 +08:00
    @dodng12 目前最大的收获是知道了 ruby 里面哪些函数的性能消耗出乎意料的大,以及如何安排变量和函数要放在那个模块和类里面来防止污染……无脑 eval 流,就怕接受了错误的数据,eval 出错导致抛出异常到全局。
    IMCA1024
        11
    IMCA1024  
       2019-12-18 20:25:16 +08:00
    hui 产,
    代写,
    个人项目 side project
    Mutoo
        12
    Mutoo  
       2019-12-18 20:46:22 +08:00
    Nginx 之父被捕:程序员业余时间写的代码算公司的?
    https://www.huxiu.com/article/331133.html
    hehheh
        13
    hehheh  
       2019-12-18 20:46:53 +08:00
    先把 leetcode 刷完吧,之前做题纯粹为了面试。现在每天不刷一道题浑身不舒服
    ddzzhen
        14
    ddzzhen  
       2019-12-19 08:36:23 +08:00 via Android
    应该有现成的 python 库可以实现,忘记名字了,可以脱离 excel 实现
    dodng12
        15
    dodng12  
    OP
       2019-12-19 10:17:52 +08:00
    @Mutoo 瑟瑟发抖中
    dodng12
        16
    dodng12  
    OP
       2019-12-19 10:18:38 +08:00
    @wangkai0351 压力肯定有,找不到方向的感觉,可能这个阶段也是必须要经过的吧
    dodng12
        17
    dodng12  
    OP
       2019-12-19 10:20:06 +08:00
    @hehheh 刷 leetcode 也是种消磨时间提高自己笔试水平的途径,可是如果长期坚持下来感觉意义不大啊
    hehheh
        18
    hehheh  
       2019-12-19 10:28:48 +08:00
    @dodng12 意义不大?额,你已经做完了?
    dodng12
        19
    dodng12  
    OP
       2019-12-19 10:34:28 +08:00
    @hehheh 木有啊,一般身边人都是面试前刷一些题,进新单位之后一般都不刷了。。。。。
    samwalt
        20
    samwalt  
       2019-12-19 15:59:58 +08:00
    @crella python ruby vb.net 都会?最后用 ruby 写?
    crella
        21
    crella  
       2019-12-19 16:53:17 +08:00 via Android
    @samwalt 不会 python,vb.net 也是面对搜索引擎编程。ruby 算是勉强背的住常用的。
    samwalt
        22
    samwalt  
       2019-12-19 18:20:35 +08:00
    @crella 谦虚了。ruby 哪些函数性能消耗厉害?
    EscYezi
        23
    EscYezi  
       2019-12-19 20:23:54 +08:00 via iPhone
    当自己需要什么却找不到满意的工具的时候。
    之前攒了些 txt 的科幻小说想看,iOS 上没找到好用的阅读器,就自己用 PHP 写了个网站,后来改造一下 API 弄了个小程序,结果发现个人资质通过不了......
    用它看了两本书之后就没碰过了,后来网站挂了也没管,代码都找不着了🌚(基地系列真好看)
    现在又觉得没有满意的日记应用,于是我又开始了......
    crella
        24
    crella  
       2019-12-19 23:20:49 +08:00 via Android
    @samwalt 我也算是夸大了吧。

    首先要看一下流行的那个 ruby 编程的规范,建议什么的。里面提到迭代器尽量用 range.each do |i|; …… ; end 而不是其他语言中常用的 for i in range 的形式。因为在 ruby 里面,后者 for 实际上是调用了前者 each 的封装,还有就是后者会把变量 i 暴露给代码下文。

    还有就是 ruby 的函数的参数都是对象引用方式(我之前看到的,不知道是不是都是这样。)在函数里面修改一个传入的对象会影响到那个对象本身。

    还有用 str <<来追加字符比 str +=快,也减少内存消耗,因为后者在不断生成新的字符串对象。隔壁贴说这在其他语言里 str +=基本上都被优化。

    还有:a='t'; b = a; b.gsub!('t', 'y')会影响到 a 的值。

    当 str.gsub!和 str = str.gsub 要达到同样的效果时,后者消耗内存较大,但是速度可能相差不大。

    同时我也感觉 func1(obj1); func1(objN)比 obj1.func2; objN.func2 要快,这里假设 func1 和 func2 对 obj 的影响是等效的。

    str.gsub 默认把参数看成正则表达式,我记得 string 有个方法会在替换的时候默认把参数看出字符串。

    还有就是在某个函数里读取全局变量会比在函数内本身读取 传入的这个变量 的 等效值 要快。我觉得可能是搜索全局变量比较耗时。

    str == '' 比 str.empty?又慢一点。

    符号量之间互相比较和字符串之间互相比较要快,因为后者是遍历各个字符。

    不显式指定函数的返回变量会慢一点。也就是函数里面最后一行的值加不加 return 语句。

    感觉 ruby 的设计还是有些不方便的,奈何轮子好用,就 irb、load 和 eval 都够我用了……作为一枚菜鸟暂时没什么追求。
    crella
        25
    crella  
       2019-12-19 23:22:35 +08:00 via Android
    还有就是在某个函数里读取全局变量会比在函数内本身读取 传入的这个变量 的 等效值 要 (之前这里输入错,应改成:)慢 。我觉得可能是搜索全局变量比较耗时。
    samwalt
        26
    samwalt  
       2019-12-20 09:18:02 +08:00
    @crella 谢了。str += 在之前的 java 里也是生成新的字符串对象,最新的 jdk 里不知道是否优化了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2805 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:49 · PVG 13:49 · LAX 21:49 · JFK 00:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.