大家如何实现编程能力的进阶,从学习完语法到能够写项目 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
proxytoworld
V2EX    问与答

大家如何实现编程能力的进阶,从学习完语法到能够写项目

  •  
  •   proxytoworld 2023-02-25 13:48:32 +08:00 4197 次点击
    这是一个创建于 1015 天前的主题,其中的信息可能已经有所发展或是发生改变。

    也学过不少语言了,rust 、go 、python ,总是学完语法,不能完成一个项目,看开源项目,感觉也很难看进去,没办法达成编程能力的进阶。

    有啥好办法能够突破初学这一层呢

    31 条回复    2023-02-26 14:02:57 +08:00
    CalebWayne
        1
    CalebWayne  
       2023-02-25 13:55:47 +08:00
    我是通过看机构视频
    sulaimanpro
        2
    sulaimanpro  
       2023-02-25 14:07:37 +08:00   2
    其实混的好不好,还是多方面的。技术只是基础,业务理解能力也很重要,只有业务理解了,才能从各个层面抽解代码,让代码看起来简洁高效。
    上一层讲,能完成编码业务,只是个打公仔,你还得学会驭人,把你的想法交给手下人去干好。
    再上一层讲,从概率上讲,一个医生能实现财务自由的途径,绝对不是精进医术。一个程序员想实现财务自由,决定不是精进技术。钥匙从来不在锁上,你得去别的地方找找。
    zapper
        3
    zapper  
       2023-02-25 14:27:08 +08:00
    软件工程,你得拿做工程的思维去看,学语言只是实现工程的一种主要手段
    hsfzxjy
        4
    hsfzxjy  
       2023-02-25 14:30:46 +08:00 via Android
    你得先有一个想做的项目的基本设计,然后直接上手就好了
    cmdOptionKana
        5
    cmdOptionKana  
       2023-02-25 14:42:35 +08:00   1
    循序渐进啊,先做小项目!

    小项目你不可能做不出来,比如一个 TODO 工具。

    做出来之后,可以在 todo 的基础上加上传图片的功能、加基础的 markdown 功能、加单用户登录,再加多用户登录…… 这样玩一下,基本上感觉就慢慢有了。

    然后再找稍大点的项目,比如论坛,或者多用户的博客平台等等,看你自己兴趣。

    或者你最终想做一个怎样的项目,说出来,让大家帮你拆解一下,拆成一个个可以轻松完成的小任务。
    yangzhezjgs
        6
    yangzhezjgs  
       2023-02-25 14:55:28 +08:00   2
    首先,你要理解所谓编程的本质是什么?
    是建模,简单说就是首先将现实中的人或物映射为数据表,然后把他们的互动过程转化为对数据的操作( CRUD )。
    所以项目关键不是编程语言,而是实现整个建模过程的设计思想面向对象建模和实现工具数据库和 web 服务框架。
    第二,最基本的建模思路就是针对功能需求用软件工程里的用例图,对象图(静态),时序图(动态)等分析建模,然后实现阶段,首先模块化分解,然后每个模块按照 MVC ,设计数据表和对应的操作函数。
    第三,就是进阶部分,你要开始学习非功能需求,包括性能(响应时间,吞吐量),高可用等,这些就要回到更本质的层面,包括学习多线程,网络编程,分布式等等。
    ugpu
        7
    ugpu  
       2023-02-25 15:06:00 +08:00
    不是你学了语言学到了就是会些代码了,
    我们学习编程的目的是 通过学习他 学会了一项技能 我们用这个技能能去做点什么
    摆脱应试教育的思维. 我们学习是认知 认知后去做点什么. 不是他能给我们做点什么 习惯 我们用他做点什么
    gant
        8
    gant  
       2023-02-25 15:12:06 +08:00 via iPhone
    just do it
    Skifary
        9
    Skifary  
       2023-02-25 15:31:32 +08:00
    只有真正做,遇到问题和解决问题以后才会有收获的感觉。

    纸上得来终觉浅,绝知此事要躬行
    whileFalse
        10
    whileFalse  
       2023-02-25 15:54:03 +08:00 via iPhone
    1. 下载一个简单项目,确保能跑起来
    2. 开改

    甚至都不需要提前学习语法。
    daimubai
        11
    daimubai  
       2023-02-25 15:55:37 +08:00
    @sulaimanpro #2 答不对题,好为人师
    panlatent
        12
    panlatent  
       2023-02-25 16:06:53 +08:00 via iPhone
    我觉得你没进行下去,没遇到一个让你感兴趣的项目,或者逼着你前进的项目。

    兴趣是最好的老师,找一个感兴趣的东西开始吧
    proxytoworld
        13
    proxytoworld  
    OP
       2023-02-25 17:33:13 +08:00
    @zapper 不是专业开发,对于项目中开发之间合作的流程还不太清楚
    proxytoworld
        14
    proxytoworld  
    OP
       2023-02-25 17:33:51 +08:00
    @cmdOptionKana 你做小工具会构思代码结构吗
    proxytoworld
        15
    proxytoworld  
    OP
       2023-02-25 17:38:47 +08:00
    @yangzhezjgs 感觉你讲的,醍醐灌顶,太强了
    sulaimanpro
        16
    sulaimanpro  
       2023-02-25 18:06:49 +08:00
    @daimubai 你说的对,听你的
    renmu
        17
    renmu  
       2023-02-25 18:24:47 +08:00 via Android
    说明你没有学精过一个语言,不然你会发现学新语言做个小东西是个手到擒来的活,很多东西都是与语言本身无关的
    ychost
        18
    ychost  
       2023-02-25 19:24:36 +08:00
    万变不离其中,如果搞 WEB 基本看下对应语言的热门框架就行了,两三天就能上手,最多五天熟练使用,但是如果是搞游戏、搞桌面之类的就需要花大力气了
    opengps
        19
    opengps  
       2023-02-25 19:50:05 +08:00   1
    完成项目的出发点不是技能多么高,而是需求足够强,你想做成的事你会主动排除困难找到对应的资源(比如技术,比如代码)
    cmdOptionKana
        20
    cmdOptionKana  
       2023-02-25 20:41:37 +08:00
    @proxytoworld 代码结构先别管,先写,一堆堆代码胡乱地堆在一起也无所谓,先把功能实现了,然后回头再改。

    改一遍,后续偶尔看教程或看别人的源码,肯定会看到别人的代码结构,由于你原本写过改过,印象就很深刻,可以马上参考起来。
    techstay
        21
    techstay  
       2023-02-25 20:48:06 +08:00
    代码这个工具是用来完成任务的,只要你有一些点子,就可以想着用新学的工具去实现一下,哪怕是十几行的脚本也没关系,能力就是在这个实践的过程中逐渐培养出来的。
    lzgshsj
        22
    lzgshsj  
       2023-02-25 20:56:13 +08:00
    看看软件工程相关的吧,从需求分析开始
    alne
        23
    alne  
       2023-02-25 21:18:32 +08:00
    @proxytoworld 不用构思,想到哪做到哪儿。
    等改不下去了就知道该重构了
    daimubai
        24
    daimubai  
       2023-02-25 22:26:19 +08:00
    @sulaimanpro 我不是你 dad ,别听我的
    richangfan
        25
    richangfan  
       2023-02-25 22:34:08 +08:00
    我是从想做个网站开始,根据他所需要的技术来学习的。这样就不会出现学了技术却找不到项目的情况。
    ClericPy
        26
    ClericPy  
       2023-02-25 23:00:56 +08:00   1
    以前也挺迷茫的, 后来发现自然而然就达到了... 过程中很难总结什么必经之路, 简单说几个有印象的点

    1. 计算机基础真的是润物无声地帮到我, 好多需求从未接触过, 但却能很快就上手解决
    2. 代码量似乎似乎真的是个笨方法却又极端有效, 万行 /十万 /百万行的自己回头望, 真的一层层鄙视过去的自己
    3. 软件工程的很多东西提前学了很难用到编码里面, 但是如果代码量上来了, 很多瓶颈和 bug 其实都可以在那些范式 /开发原则里面找到标准答案, 算是一种弯路超车的感觉
    4. 项目有时候到一定规模, 会遇到开发或设计瓶颈, 那些架构师的书里的解决方案真的省了不少脑细胞
    rb6221
        27
    rb6221  
       2023-02-26 01:55:15 +08:00 via iPhone
    多看别人的项目代码,不要只关心自己做的一两个模块,多从整体出发思考问题,看问题的角度不一样 你就能知道为什么这个地方要这样设计
    KIRAYOMATO
        28
    KIRAYOMATO  
       2023-02-26 02:13:41 +08:00
    多写,项目都是一点一点写起来的,一边写一边学
    andy20160606
        29
    andy20160606  
       2023-02-26 09:49:06 +08:00 via iPhone
    计算机语言是触类旁通的,只是语法特性略有不同,先熟练掌握一门语言即可。

    之后继续夯实基础,数据结构玩明白,做需求时,能提高效率,leetcode 上面的练习就不错

    最后找个公司实习,有个半年时间,独立开发模块就没什么问题了
    timelessg
        30
    timelessg  
       2023-02-26 10:00:14 +08:00 via Android
    想办法进中大厂,被需求推着很快就 ok 了
    Thecosy
        31
    Thecosy  
       2023-02-26 14:02:57 +08:00
    功能的实现过程其实跟语言无关,做下去就对了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     911 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:03 PVG 07:03 LAX 15:03 JFK 18:03
    Do have faith in what you're doing.
    ubao msn 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