编程入坑指南

Trump丶 · · 2170 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前言

又是一年开学季,回想去年,还是新生的我踏入校园,虽然脚下的路走得踏实,但是梦想的路,却很迷茫。

热爱编程,却不知道如何入门,这大概是很多新生共同的疑惑,距离开学已没多久,我带的学弟学妹一只手已经数不过来,总是给他们讲着一样的东西,突然想到,为何不直接把经验写下来,让他们慢慢看,既能培养他们的自学能力,也可省下我的一些时间

编程其实并不难,先理解下面几组概念

概念

文件、文件夹、路径

很多同学使用的电脑都使用的是Windows系统,文件是依据后缀名分类的,不同后缀名代表不同类的文件,虽然这样理解没有错误,但其实是条弯路,没必要这么麻烦,文件就只简单的分为两类,文本(字符)文件 和 二进制文件,虽然文本文件也是二进制储存的,但是它的内容是人类能看懂的字符,比如英文,中文,或者其他有意义的符号集,这些符号虽然人类能看懂,但是电脑不认识,电脑只知道电路的开闭,也就是1和0,二进制文件就是人类看不懂但是电脑看得懂的文件,也就是全是010101的文件。

文件夹顾名思义就是用来装文件或文件夹的,这个很好理解。

路径,文件和文件夹储存在硬盘中,硬盘可以理解为一座大城市,文件和文件夹就视作房屋,想要在一座城里找到具体的某一间房,当然要知道这间房的具体地址才行,不然一间一间地去排查吗,这个地址,也就是所说的路径,想要在硬盘中找到某个文件或文件夹,就需要知道它们的路径才行。

编辑器、编译器、编程语言

前面说了文件分两类,一类是人能看懂但是电脑不能看懂的,一类是电脑能看懂人看不懂的。写代码,其实就是在编辑一个文本文件,会使用到编辑器,我们写的代码当然能看懂是什么意思,但是电脑不懂代码是什么意思,那么想要让电脑知道代码具体的意思,就需要一个“中间人”来做翻译,这个“中间人”就是编译器

所以,编辑器是用来编辑文本文件的(也可以编辑二进制文件)

编译器是用来将文本形式的代码转换成对应的机器码的(转换过程就叫做编译)

编程语言有很多种,如 C/C++、 Golang、 Java 等等,但实际都是殊途同归,不同语言适用的场景不同罢了,不同语言之间的根本区别,其实就是对应的编译器(静态语言是编译器,动态语言是解释器)不同,所以想使用一门语言进行编程,只需要有语言对应的编译器(解释器)就行了

图解

一些简单的概念讲了,可能会有些难以理解,下面就配合图片来解释,形象一点

后缀名不同的三个文件

但其实都是文本文件

二进制文件

有意义的执行结果

编辑器打开二进制文件(为了方便,二进制码通常用十六进制简短表示)

文件夹

文件和文件夹的区别,前面有d的表示directory,即文件夹

路径

使用编辑器编辑文本文件

甚至编辑二进制文件(通常意义不大)

PS:好用的编辑器推荐,Sublime TextVS CodeAtom,非图形界面编辑器Vim(神器,强推)
编译器一般都是命令行调用,图示为调用gcc编译C代码

调用Go编译器编译Go代码

PS:经常听到的IDE这个词,其实是 Integrated Development Environment(集成开发环境)的缩写,也就是 编辑器 + 编译器 + 许多提高效率的小工具

完整流程图示

Mac

先找到自带终端(任何shell应用都可以)并打开

打开后看到类似窗口
  1. 输入cd Desktop 并敲一下enter键
  2. 输入touch hello.c并敲一下enter键,可以发现桌面上多了一个叫做test.c的文件
    hello.c
  3. 使用文本编辑器打开这个文件
    当然,用其他的编辑器也都是可以的
  4. 在打开的编辑窗口里面输入下面图示内容
    注意其中的符号都是半角符号
  5. 输入完成后,保存(command + S),然后关闭窗口
  6. 在刚才的终端窗口中输入gcc -Wall hello.c -o hello并敲一下enter键
    可以发现桌面上出现了一个hello文件,就是刚才用gcc编译出来的可执行文件
  7. 再在终端中输入./hello并敲一下回车键
    可以看到,终端中输出了Hello World字样

    如果上面这些步骤都能够理解,那么相信你应该知道如何在Mac上进行简单的编程了

Windows

  1. 安装编译器
  2. 新建文件
  3. 编辑文件
  4. 编译生成可执行文件
  5. 测试运行

Linux

Linux 和 Mac 都是有强大的终端的,操作基本一致,参照Mac

编程语言特点介绍

学校开设

咋们系大一上学期开设C++的基本语法课程,只讲 类和对象(不包括) 之前的内容,但推荐自己把全书看完,全书因为内容浅显易懂,对自己要求高的同学,建议一周阅读完,能力有限的同学,建议两周读完,读完后进行自学(如果不知道读完之后学什么,可以联系你们的学长)。
大一下学期开设Java课程,讲的内容也只是基础语法。
学习完一门语言的基础语法后推荐学习数据结构和算法

C

  • 接近底层,可以在裸机上跑
  • 高级语言中效率最高,达到汇编的80%
  • 面向过程
  • 没有GC,很多指针需要自己释放,需要程序员很细心

C++

  • 万能的
  • 面向对象
  • 标准库
  • 大量的三方库

Java

  • 完备的类库
  • 优秀的生态
  • Apache、Alibaba 等优秀公司
  • 用户基数大
  • JVM 各种配置
  • 运行在虚拟机上,跨平台

PHP

  • 动态编程语言
  • 编程范式难以统一
  • 面向对象部分设计过于复杂
  • 对 MySQL 支持好
  • 解释执行,需要单元测试覆盖率保证

JavaScript

  • 优秀的生态
  • 全栈
  • EggJS/Ant Design/Element UI
  • 函数第一,相对不易理解
  • 语言规范仍在快速发展

Python

  • 科学计算
  • 数据分析
  • 人工智能
  • 动态语言

Golang

  • 静态类型
  • 编译完成的二进制对系统零依赖
  • 代码规范统一
  • 简化到极致的并发模式,内建的 HTTP 支持
  • 促进 Docker、云的发展
  • 面向接口

书籍推荐

编程语言入门

《The C Programming Language》

数据结构与算法

《算法导论》《大话数据结构》《算法》(第四版)《算法竞赛入门》(第一二版)

计算机理论

《深入理解计算机系统》《计算机组成原理》《编译原理》

网络

《TCP/IP详解》(卷一二)《计算机网络(自顶向下)》《图解HTTP》

数据库

《数据库系统概论》

Linux

《鸟哥的Linux私房菜》《深入理解Linux内核》《Linux内核源码解析》


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Trump丶

查看原文:编程入坑指南

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2170 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传