我应该学习哪些编程基础知识?

What programming basics should I learn?

我在编程方面有着非常奇怪的学习经验。我教过C++,但我没有从中得到很多。这就是我从中得到的:头和变量声明。我试着自学PHP,在里面我学到了很多。问题是,我的很多知识是广泛的、随机的,并且是为特定情况而设计的。

所以,我的问题是:在大多数语言中,编程有哪些基础?


术语"基础"意味着一个简短的列表,但是要成为一个有效的程序员,你必须学习很多概念。但是,一旦你学习了它们,你就能够在不同的语言中应用许多相同的概念。

我编译了一个(长!)在一些编程语言(如果不是大多数)中重要的概念列表。

  • 语言语法

    • 关键词
    • 命名约定
    • 算子
      • 转让
      • 算术
      • 其他
    • 直接常量
    • 条件句
      • 如果/其他
      • 交换机/机箱
      • 什么是正确或错误(0?空字符串?NULL?)
    • 回圈结构
      • 对于
      • foreach/迭代
      • 虽然
      • 做而不做
    • 异常处理
    • 从其他文件导入/包含代码
  • 类型系统

    • 强/弱
    • 静态/动态
  • 内存管理

  • 作用域

    • 有什么范围
    • 如何处理重叠范围
  • 语言结构/程序组织

    • 变量
    • 方法
    • 功能
    • 闭包
    • 包/模块/命名空间
  • 数据类型和数据结构

    • 基元
    • 物体
    • 数组/列表
    • 映射/哈希/关联数组
    • 集合
    • 枚举
      • 字符串连接
      • 字符串比较和相等
      • 子串
      • 替换
      • 易变性
      • 用于创建文本字符串的语法
  • 函数、方法、闭包

    • 方法/函数重载
    • 方法/函数重写
    • 参数传递(传递值/传递引用
    • 返回值(单返回/多返回)
  • 语言类型(不互斥)

    • 脚本编写
    • 程序的
    • 功能性
    • 面向对象
  • 面向对象原则

    • 遗传
    • 经典与原型
    • 单个、多个或其他
    • 静态变量/全局变量
    • 访问修饰符(private、public、protected)
  • API(或如何做基本的事情)

    • 基本输入输出
    • 打印到标准输出
    • 从标准中读取
    • 文件输入输出
      • 读取文件
      • 写文件
      • 检查文件属性
    • 正则表达式的使用
    • 引用环境变量
    • 执行系统命令
    • 线程模型
      • 创建线程
      • 线程安全性
      • 同步原语
    • 模板法

这里还没有提到的另一件重要的事情就是面向对象编程。围绕类、继承、接口等的思想。


一个非常重要的基本编程技能是能够在许多不同的抽象层次上进行思考,并知道什么时候和哪一个抽象层次最适合一个特定的编程任务。


测试!(单元测试、集成测试、夹具、模拟对象…)

不是编程技能,而是开发技能:使用修订控制,学习提交处理一个(或几个相关的)需求或错误修复的更改集,并且总是会导致编译时没有错误的源代码树。这将教你如何组织工作:—)

最后但并非最不重要的是:英语……:-)同样,这不是一种编程技巧,我知道有些人可能不同意,但我觉得任何使用英语关键字的编程语言也应该用英语编程。所以:使用英语变量名,等等。我甚至会说代码注释应该是英文的,但我相信更多的人会不同意这一点。


指针。因为很少有人真正理解他们。

递归和迭代,加上不同之处,以及使用它们的时间。

拿到一本算法书,通过练习练习——你不会失望的。


找出你想先编程的东西——例如Web、PC应用程序、基于Java的应用程序、移动设备、报表、系统接口、企业对企业接口等。


如果我是你,我会回去从K&R课程学习C编程语言。