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

程序设计的基础方法(发刊词)

  •  
  •   Braisdom ·
    braisdom · 2020-12-25 10:55:51 +08:00 · 1644 次点击
    这是一个创建于 1211 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前面也有过讨论,本次正式发布,保持每周更新一篇: https://www.v2ex.com/t/736407

    将文章写短,节约读者的时间,而不是彰显作者专业度。通过简短、浅显的代码示例,讲解抽象且复杂编程模型,而不是掺杂大量术语或单词缩写。以客观程序的事实为基础,而不是过分表达个人主观理论,上述是我写这一系列文章的基本宗旨。当然,写文章和写代码一样,也需要不断的迭代和版本更新,同时也需要根据读者反馈调整一些文字的描述和框架结构,从而形成一套基础编程的方法体系,而不是对现有有理论或框架技术应用的解释。透过现象看本质,通过对基础编程方法的学习,掌握基本的技术发展规律和趋势,形成自身看软件编程世界独特的方法。

    理解概念、灵活运用是一个层次,但发现背后遵循的规律是一个更高的层次。学习理论的结果是一个层次,学习理论背后的原理和发展的过程是一个更高的层次。学校老师或书籍教导我们的更多是结果,很少谈及“为什么?”,本系列有一个副标题“凡事就怕问为什么?”,这是本系列的主要线索,探寻更多“为什么”。

    现实中,我们能够找到的编程知识,大多数告诉你:是什么?如何用?却不告诉你为什么?“怎么用”,“如何用”是表象,不同人有不同的理解,也会形成自身的理论体系。但不同人之间总是使用同样的方式解决问题,尤其是一些优秀的项目,潜在遵循的规律是什么?这是一个值得去深究的课题。

    经济学提供了一种客观分析的视角,一套方法论体系,一种以边际为主的分析方法,以研究人类的活动和发展规律为主要线索。在程序设计领域,更多是偏主观的理论,总是带着强烈的个人色彩。虽然有价值,但同时也拉长了基础编程的学习路径。尤其是初学者,看到繁多的技术理论更是无从下手,这也就是我写这一系列文章的初始动力,通过哲学式的思辨,讨论程序设计中的各种元素背后所遵循的规律,以浅显的语言描述,简单直白代码示例讲解背后的原理。虽然有个人主观的认知,但更多是基于开源项目的代码总结的规律。

    软件编程的历史并不长,理论体系的发展却很多,所谓的编程方法类的书籍,更多是讲各种编程语言的特性和语法,一本书里代码比概念的阐述还要多。再就是讲解流行的框架技术或软件工程理论,通过这类书籍的学习可以快速进入工作状态,也能在面试的过程中顺利通过,这只是基础工具应用的学习。而真正要写好每一行代码,是在进入不同公司后,学习特定领域下的编程范式,更确切的说是符合某个个人编程理论倾向,缺乏程序设计方法相对客观的认知,同时也会局限于当前的编程模型,久而久之,形成固有的思维方式,却忽视了背后存在的原理,即使写了很长时间的代码,灵活运用了各种工具,但对软件技术和理论的创新,显得力不从心,用一名常见的古文来表达:“事要知其所以然”来表达最为恰当。掌握内存的逻辑和背后的规律,才能对现有的技术提出挑战,创造出符合软件发展规律的项目或产品。

    其实,所谓背后的原理和规律,是前人在一次次惨痛的 Bug 中积累的经验,是不同程序员在处理类似问题时采用的共性的方法,是软件发展过程中不知不觉演进的方向,“读史可明鉴,知古可鉴今”,同样了解软件的发展过程和最原始的动力,有助于我们更理性的看待今天的发展,更智慧的理解未来的趋势,更重要的是形成自身独特的方法体系,创造更优秀的软件项目。

    第一阶段 Java 基础编程元素的理解

    • 什么时候定义一个 Method ?为什么?
    • 什么时候定义一个 Interface ?为什么?
    • 什么时候定义一个 Exception ?为什么?
    • 什么时候 Catch Exception ?什么时候 Throws Exception ?为什么?
    • RuntimeException 与 Exception 到底有什么区别?
    • 什么时候需要打印日志?为什么?

    个人项目: https://github.com/braisdom/ObjectiveSql

    同时本人正在求职,有合适机会的微信联系我:braisdom

    关注微信,及时收到信息,V 站也会发:

    wx

    6 条回复    2020-12-25 21:42:40 +08:00
    Kirsk
        1
    Kirsk  
       2020-12-25 12:58:34 +08:00 via Android
    不如结合原则来讲解 更能体现怎么去做设计 什么样的写法符合原则(不是教条) solid kiss 等 或者一套方法论
    Braisdom
        2
    Braisdom  
    OP
       2020-12-25 13:01:57 +08:00
    @Kirsk 原则往往比较空洞,而且原则很难适用于多变的应用系统,需要的是讲解不同人处理同样问题而使用同样的方法,背后遵循的规律。
    Kirsk
        3
    Kirsk  
       2020-12-25 14:34:00 +08:00 via Android
    @Braisdom 正是因为原则抽象层级高 更值得讲 原则对人和系统都有普适性 什么样的做法符合原则 你后半句讲的就是原则
    Braisdom
        4
    Braisdom  
    OP
       2020-12-25 14:40:13 +08:00
    @Kirsk 空洞的原则和规律没有太大意义,就像面向对象的基本概念,封装、多态和继承,还有一些抽象的基本原则。太空洞了,看似包含了一切,其实啥也没有。我需要阐述的是具体的,实际的,就像“为什么要定义一个方法”,分析优秀的开源项目,从中找出可以验证的实例,并说明为什么,这些才是有意义的。
    xuanbg
        5
    xuanbg  
       2020-12-25 19:48:52 +08:00
    程序设计的目的是什么?我认为这一点要先讲清楚。
    Braisdom
        6
    Braisdom  
    OP
       2020-12-25 21:42:40 +08:00
    @xuanbg 这是一个好问题,但相对宏观一点,属于软件工种类的问题,重要的是先从微观去分析,如何去写好程序。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1304 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:37 · PVG 01:37 · LAX 10:37 · JFK 13:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.