05.如何高效学习编程语言?-v05

139 阅读5分钟

如何快速获得编程基础能力?

先交付再深入研究底层原理:

  • 软件工程属于工科,工科和理科是有区别的,工科是注重交付产品,使用理科已经研发验证的理论和工具去制造产品.
  • 很多人用学习理科的思维去分析研究工科的原理,这很好,或增加自己理科的能力,但是会减少在工科上投入的时间和精力,导致深入研究了理科(原理)浅显的研究了工科(交付产品).

交付什么:

交付产品代码:

  • 软件工程的核心就是交付软件产品,千万不可八股文倒背如流,但什么软件也写不出来,这就是纸上谈兵.
  • 类似一个球迷对足球十分能聊,但是上场一个球都无法踢进进球门.不要让这种笑话落在自己的头上.

交付学习笔记:

  • 先写代码,再总结笔记,

    • 所谓的代码语法教程和汉语英语语法一样,是现有语言,后有人总结的语法,不可本末倒置,语法是人们对已经存在的语言的归纳总结,非常抽象.

    • 例如.

      • 我们用语言描绘一个你从没见过的生物,我们只能知道一小部分,大部分都要想象,
      • 语言的描述就是落洞百出的,也是十分无力的,想深的了解一个生物,就要去看,去摸,甚至与解剖,.
    • 所以

      • 只看语法是不可以的,语法只是用来规范我们总结的规律.总结规律要靠我们写各种不同的代码实验,对比测试,获得总结结果.然后把实验报告写成语法总结.
      • 任何人写的语法总结都无法直接让人理解,都是需要用例子来让人懂的,语法是例子的辅助.例子才是本源.

如何提高编程水平水平?

多实战,根据需求设计代码,迭代

  • 实战是最好的老师:

    • 想成为英文文学家只看英语语法是不够的,很多作家的英语语法很一般.
    • 如海明威,作品中用的大多是简单句,但依然用得传神.
    • 学习编程语言也一样,语言是描绘场景的画笔,解决对应场景的问题才是有价值的,才是最能提升语言能力的.
    • 不要沉迷于语法而忽略了解决现实世界无数的问题.
  • 多写项目

    • 拆解开源项目,拼接开源项目
  • 多做练习题

    • 面经
    • 力扣

多多加入编程社区

  • 语言环境

    • 英文社区最好,毕竟编程语言大多是英文的,我们可以关注开发编程语言的公司和相关的技术专家.关注他们的言论.
  • 精神力量

    • 获取一直信仰和精神力量,有时候他们的感悟可以让我们突然对语言的理解高了一个层次.
  • 优胜略汰

    • 多多加入相关的群,多多退出低质量的编程群

最后深入研究底层原理

  • 底层原理的价值

    • 如果自己学的足够优秀,进入和大公司的高层.终究有一天会发现万分之一的性能优化可能对几亿用户造成影响,带来几百万几千万每年的影响,这时候细节的优化就十分重要了,这就是为什么大厂需要很多技术专家,因为一些万分之一的性能优化,就能带来巨大的收益.
  • 临界值

    • 但是在小公司这样优化代码,是不合算的,雇佣昂贵的专家不构建项目而是研究语言本身的底层原理优化代码的性能,中间有个临界值,大家自己估算.
  • 适合自己最好,不要邯郸学步东施效颦

    • 研究原理要适度,工科的底层就是理科,想让工科有突破还是要靠理科的,所以原理确实重要,但是那是后期要带来突破的时候才需要的.我们适度研究常用的原理即可,如果我们不是大厂的技术专家确实可以给企业带来巨大的收益,我们不要陷入原理的无尽的知识海洋.

有疑问怎么解决

问AI

  • GPT-4最好(bing,ChatGPT plus,poe)
  • claude-100k适合解决复杂报错信息,一次全部粘贴进
  • 不及格:讯飞星火,文心一言,天工,通义千问

检索

  • 谷歌最好
  • bing
  • 百度

咨询人类

  • 朋友

  • 网友

  • 同事

  • 编程社区

    • Stack Overflow
    • GitHub

总结

前期先会用

重交付

  • 交付代码,交付学习笔记,工科就是要交付产品,要生产.

轻原理

  • 原理要在多写代码的解决实际问题时候自己总结,然后对照专家的总结自己才能有所感悟,否则只会给自己带来一头雾水,例如自己游泳,看教材说如何游泳才能感同身受.

后期补习原理

  • 原理很重要,后期要花时间研究,人的精力有限,先交付再深入研究原理是速学的最佳路径.
  • 类似学游泳,先让人在水里狗刨,然后再优化学习蛙泳蝶泳,再去看关于游泳的论文,如果把大部分时间用来看游泳的论文,那学游泳的进度会很慢.

高效学习

  • 哪里不会学哪里,很高效

  • 哪里常用学哪里很高效

  • 不用的,不常用的,战略性放弃,不要学,很高效,大部分技术我们一辈子都不会用.

  • 用到的时候要精确检索.

    • 不要超额学习不用的技术,例如用到1个常用技术,不要直接学100个不常用的技术
    • 书本或者网络上经常会对一个简单的技术,5分钟能学会的技术讲5小时,这确实能让人深刻理解这个技术细节,但是会误了大局,导致我们难以学完整个技术栈.就像西游记中唐僧留在了女儿国.
  • 学会提问,描述问题

    • 大量练习,获得反馈,反思再提问,多多提问即可获得精确描述问题的能力.