学习编程之始[知乎牛岱的live笔记]

文末附有其Github的代码仓库

1.Github 与 stackoverflow

  • 开源: 软件源代码公开、免费

GITHUB

Issue 评论/Bug反馈
PullRequest 开源代码贡献
Git 版本控制/代码历史记录工具 Repository 代码仓库
fork 克隆代码

StackOverflow

问答社区 有价值的问题

2.Search Engine 与 Browser

搜索引擎:
Google、Bing、Quark

浏览器:
PC端:Chrome(Chrome中的插件使其变得更强大,比如做前端),Edge;
移动端:夸克,Chrome;

3.学习编程过程的自我定位

把自己定位成为一个开发者,而不是一个学生!

  1. 理解知识框架,在实战中填补细节
  2. 写技术性文章,发表在知乎等平台————意思是,不要仅仅通过记笔记完成学习,而要吸收消化后表达出来
  3. 不用永远处在准备状态中,不用永远在学习编程的基础知识。而要在开发中有目的性地学习,扩展延伸学习,学会看google,StackOverflow,文档。
  4. 不要关注在知识的储备中,而要关注在项目的实现和完成上,因为知识本身就是用进废退,不要担心遗忘。学习一门语言之始,一定要开始了解,这门语言可以用来做什么,那学习这门语言的目标就是如何利用这个语言完成一个初级目标。例如java,“在半年内通过学习java,做出一个中小型的基于Web的企业管理后台”等。
  5. 要在编程的过程中给自己成就感和学习反馈。
  6. 简历上最好的表达方式是:GitHub账号,XX项目作者。
  7. 降低学习梯度,使学习曲线平滑,例如从克隆项目到修改项目到创建自己的项目。

4.学习使用命令行

因为大部分工具其实是没有图形界面的,而且使用命令行更加简便快捷,可以自动化执行。

  • 终端(和计算机交互的另一种方式):

    Windows: Windows Terminal,PowerShell,WSL,Command Prompt
    Bash Git工具: Branch(解决多人协同工作的问题),Commit(代码历史记录,便于维护),Remote/Local

Git学习资源:Become a git guru(https://www.atlassian.com/git/tutorials)

5.个人技术博客的搭建

最容易:GithubPages;
中等:Wordpress、Wix.com等建站工具(比较业余);
硬核:Jhipster功能应用————全栈功能型网站:What is JHipster?;。

6.编程习惯

代码风格
CheckStyle工具————代码风格检查工具

设计模式
设计模式是一种用编程语言描述显示世界问题广泛采用的各种模式,如观察者模式、工厂模式、依赖注入模式等。

!!!工程化管理代码!!!

写代码的一些小习惯

  1. 变量名不要过于简洁,最好可以直接通过变量名推测变量的作用。
  2. 重复出现的代码一定要封装成独立的类或函数。
  3. 提前降低代码的耦合度,不同作用、不同类别的代码,不要混在一起,最好分成独立的文件。
  4. 将代码进行业务分层,只有层次分开了,可以获得足够的可拓展性。
  5. 用良好的设计模式来“设计”软件,在执行一些算法的时候,可以想一想它的时空复杂度,如何让它运行地更快。
  6. 养成用GitHub托管项目的习惯。

7.四大核心课程

  1. 算法与数据结构
    • 学习coursera上开源算法4课程(教材:https://algs4.cs.princeton.edu/home/ 视频:https://www.coursera.org/learn/algorithms-part1/)
    • 做leetcode的easy到medium难度的题目(初、中级学习)
  2. 操作系统
    • 经典教材:Operating System Concepts;Linux Kernel Development
    • 一个操作系统的GitHub项目:[How-to-Make-a-Computer-Operating-System]https://www.github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
  3. 计算机组成原理
    • 理解计算机的核心思想
  4. 计算机网络
    • 互联网的运行方式

8.管理电脑

  • 包管理工具:

    Linux: apt-get;yum;etc
    OSX: brew
    Windows: Chocolatey

  • 开发工具:

    Visual Studio: C,C++ Visual StudioCode: 除了C/C++外的几乎所有主流语言

牛岱的代码仓库:https://github.com/niudai/How-to-be-a-good-programmer