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

发现把某些法律条款改写成伪代码更好理解

  •  1
     
  •   weakish · 2017-09-21 10:08:31 +08:00 · 3721 次点击
    这是一个创建于 2652 天前的主题,其中的信息可能已经有所发展或是发生改变。

    发现将某些法条改成伪代码感觉可以提高可读性(也有可能并没有增加可读性,只是更加习惯而已)。 同时,改写的过程中也能发现一些含糊的地方 (其中包括法条本身表述不明确及表述明确但自己没理解两种情况)。

    比如,用伪代码表达诉讼时效:

    class 民事权利 {
        private Period 诉讼时效;
        private Period 完整诉讼时效;
        LocalDate 知道或应当知道被侵权;
        LocalDate 被侵权;
        boolean 当事人自愿履行;
    
        public 民事权利(LocalDate 知道, LocalDate 被侵, boolean 自愿) {
            this.完整诉讼时效 = Period.ofYears(2);
            this.诉讼时效 = this.完整诉讼时效;
            this.知道或应当知道被侵权 = 知道;
            this.被侵权 = 被侵;
            this.当事人自愿履行 = 自愿;
        }
    
        public Period get 诉讼时效() {
            return this.诉讼时效;
        }
        public void set 诉讼时效(Period p) {
            this.诉讼时效 = p;
        }
    
        public boolean is 有效期内() {
            if (当事人自愿履行) {
                return true;
            }
            else {
                // 民法通则 s. 137 规定有特殊情况的,人民法院可以延期。
                // 实际诉讼中这个一般要援引司法解释具体 patch 的情况才能延期。
                // 因此下面不考虑这个情况。
                LocalDate today = LocalDate.now();
                // 1988 年最高法关于执行通则的意见明确了 20 年期限不适用中止、中断的规定。(s. 175)
                if (Period.between(被侵权, today) > Period.ofYears(20)) {
                    return false;
                } else if (Period.between(知道或应当知道被侵权, today) > this.诉讼时效) {
                    return false;
                } else {
                    return true;
                }
            }
        }
    
        public boolean 中止(boolean 因不可抗力或其他障碍无法行使请求权,
                            LocalDate 中止原因消除) {
            if (因不可抗力或其他障碍无法行使请求权) {
                if (诉讼时效 <= Period.ofMonths(6)) {
                    Period 中止期间 = Period.between(LocalDate.now(), 中止原因消除);
                    this.诉讼时效 += 中止期间;
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
    
        public boolean 中断(boolean 提起诉讼, boolean 提出要求, boolean 同意履行) {
            if (提起诉讼 || 提出要求 || 同意履行) {
                this.诉讼时效 += this.完整诉讼时效;
                return true;
            } else {
                return false;
            }
        }
    }
    
    class 身体伤害 extends 民事权利 {
        public 身体伤害(LocalDate 知道, LocalDate 被侵, boolean 自愿) {
            super(知道,被侵,自愿);
            this.完整诉讼时效 = Period.ofYears(1);
            this.诉讼时效 = this.完整诉讼时效;
        }
    }
    // 同理可定义 `class 质量不合格商品`, `class 延付拒付租金`, `class 寄存财物丢失损毁`,
    // 此处省略。
    
    abstract class 另有规定 extends 民事权利 {
        @Override public boolean is 有效期内();
    }
    

    以上伪代码摘自 写给 Programmer 的法律入门指引

    注意:v2ex 强行在中文和英文之间加空格,code block 里也不放过,所以上面有些空格请自行脑补去除。

    19 条回复    2017-09-25 22:31:39 +08:00
    myliyifei
        1
    myliyifei  
       2017-09-21 10:20:54 +08:00 via Android   ❤️ 2
    中国法律 txt
    jason2017
        2
    jason2017  
       2017-09-21 10:27:27 +08:00   ❤️ 1
    谈论技术的时候总有些 sb 喜欢往政治上扯。
    cyang
        3
    cyang  
       2017-09-21 10:43:53 +08:00   ❤️ 2
    也就 V2 的程序员会觉得伪代码好理解,
    给普通人看还不如画成示意图,流程图来的更直观!
    fiht
        4
    fiht  
       2017-09-21 11:06:10 +08:00   ❤️ 1
    讲道理这个并不如示意图来得直观
    lyragosa
        5
    lyragosa  
       2017-09-21 11:09:09 +08:00
    在另一个平行世界中的程序员共和国就是这样的。
    justfly
        6
    justfly  
       2017-09-21 11:14:40 +08:00
    如果把自己的情况当参数传进去能执行出来结果就更好了。

    其实最怕怕是在我们当前的环境下,没办法编译执行,系统版本、依赖库什么的需要先升级。
    hundan
        7
    hundan  
       2017-09-21 11:17:53 +08:00 via Android
    真的写成程序的话好像也可以?
    不过抢了律师的饭碗的样子
    paulagent
        8
    paulagent  
       2017-09-21 11:18:26 +08:00
    可问题出了事情难道不是要找律师吗? 你难道准备自己看懂法条去当自己的代理人吗?

    还是说怕被律师坑了?
    est
        9
    est  
       2017-09-21 11:19:41 +08:00   ❤️ 1
    德国的法律,机器可解析,已经放在 github 了

    https://github.com/bundestag/gesetze#german-federal-laws-and-regulations


    查了下。。5 年前的事儿了。

    时间过得真快。。
    est
        10
    est  
       2017-09-21 11:22:23 +08:00   ❤️ 1
    法律放在 git 上更加重大的意义是,

    1. 可以方便历史追溯看哪个傻逼议员把哪个条款在什么时候改了。。。
    2. 可以根据时代变化提交 PR



    讨论: https://news.ycombinator.com/item?id=4353389

    大部分人的结论是:然并卵。这个世界的政治权力还是被 60 年的老不死的掌控者。
    WillShin
        11
    WillShin  
       2017-09-21 11:23:04 +08:00 via iPhone
    是对你们程序员更好理解吧。写成这样只是更加增加了理解法条的壁垒。
    ranleng
        12
    ranleng  
       2017-09-21 11:23:45 +08:00 via Android
    txt 还想成为 exe ?
    newtype0092
        13
    newtype0092  
       2017-09-21 11:58:33 +08:00
    数学家:看,那帮看不懂公式的笨蛋就喜欢加点英语凑出一坨乱七八糟的东西出来,还自以为很聪明。。。
    1759761439
        14
    1759761439  
       2017-09-21 12:23:34 +08:00 via Android
    app 上没格式化看起来我觉得完全不行
    misaka20038numbe
        15
    misaka20038numbe  
       2017-09-21 12:30:47 +08:00
    操作系统并不是以后缀名判断是否是可执行文件的,只要文件头说是可执行文件,.txt 照样可执行。
    weakish
        16
    weakish  
    OP
       2017-09-21 16:41:15 +08:00
    @hundan 某些医院的医生边听病人描述症状边搜索,可不意味着医生没用。法务工作者同理。初级的完全可以自动化。
    Taojun0714
        17
    Taojun0714  
       2017-09-22 05:30:45 +08:00   ❤️ 1
    @est markdown 格式的的国民法典而已,啥就成了解析了
    weakish
        18
    weakish  
    OP
       2017-09-24 09:32:46 +08:00
    @paulagent 法律行业的现状是靠谱一点的律师基本没兴趣做小 case (说不定收个几百一千的咨询一下还可以),所以并不能指望全部委托给律师办。而找有兴趣做小 case 的律师,碰到不靠谱律师的概率比较大。这和码农业不一样,几个页面的小网站,费点心也能找到靠谱的开发者来做 —— 但这一方面是码农圈比较开放,一方面也是对行业比较了解,真的连 dns, html 什么的都不知道的纯外行,去找外包公司,其实也很容易踩到坑。
    wizardforcel
        19
    wizardforcel  
       2017-09-25 22:31:39 +08:00 via Android   ❤️ 1
    你 out 了。

    计算法理学早就有人研究了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2808 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:05 · PVG 23:05 · LAX 07:05 · JFK 10:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.