C语言编译器,写给萌新们看看。
就我已经经历过的大学课程,仿佛每一门计算机的专业课程的开头,都是在介绍计算机发展的历史,和大名鼎鼎的冯诺依曼结构。
譬如C语言,比较水的计算机导论,c++,数据结构,计算机组成原理,甚至是Linux实践。
第一次听着可能还新鲜,但久而久之就越来越无聊甚至忘记了具体的内容是什么。我也差不多,所以为了你们更好的理解,专门去看了这么一部电影,《模仿游戏》。
除了能看见超帅的男主角,令人揪心的剧情,还有值得我们这种专业人士注意的,当然就是大名鼎鼎的图灵机。
你能想象我们今天接触的大部分电子设备都是从这玩意儿演变过来的嘛!
所以你要明白,计算机的最底层,其实是非常简单的,就和上图这玩意儿一样。
当然你肯定知道,计算机是使用二进制运行的,也肯定知道那是因为世界上所有可以找到的元器件,能方便表达的就是二进制,比如拿一个电压器,高电压就是1低电压就是0,多方便。
那么自然而然,最开始那批学习计算机的勇士们,都是拿着10101010这样的二进制直接和那笨重的机器打交道,他们拿着长长的纸条,有孔的地方是1,没空的地方是0(还是正好相反来着),总之就是很难对了!
于是一群快累死的程序员动用各自的智慧,发明了汇编语言。
然而汇编语言有多难你肯定知道!
于是又一群快累死的程序员们,发明了高级语言,C语言。
故事讲到这里就结束了,但请你依然把时间线放在十几年前,C语言刚刚发明的那会儿——我们刚刚从使用纸条甚至手摇的机器语言时代,从汇编语言的艰难垦荒走过来。哪里有操作系统Windows啊!
所以,那个时候的我们使用命令行编程。
我猜你可能没办法理解。你使用win+R的组合,在输入cmd,注意不是nmd。
就会看见黑黑的命令行,也是每次你使用VC或者DEV或者任何C语言编译器时,明明那么花花绿绿的界面,一定会蹦出来的那个黑色框框,没错,基本上就是这个了。
那个时候的人们打开电脑就是这种糟心玩意儿。
想看时间怎么办,你输入个time试试。
想听音乐怎么办,对不起,没有。
于是在那种艰苦的情况下,诞生了gcc,因为即使环境再艰苦,我们程序员依然要编辑C语言!
这里我就不给你演示了,因为在Windows上用gcc还要配,我懒得配了。总之就是在这么一个黑不拉几的东西上,C语言完成了从你能看得懂的代码,到机器能看得懂的机器语言10101010。
就跟Windows的诞生一样,那黑色的命令行实在太难看也太难用了。
我们优秀的前辈们,也实在忍不了在gcc上编译运行,出错全靠肉眼输出改bug了。
于是我们有了VC,一只套着VC名称实则还是gcc的狼。
所以其实,Windows和Linux系统用的C语言编译器,都是gcc,只不过你们一般见到的,都是套了壳子的。
看完觉得还行不点个关注?
C语言编译器,写给萌新们看看。的更多相关文章
- 【转】自己动手写SC语言编译器
自序 编译原理与技术的一整套理论在整个计算机科学领域占有相当重要的地位,学习它对程序设计人员有很大的帮助.我们考究历史会发现那些人人称颂的程序设 计大师都是编译领域的高手,像写出BASIC语言的BIL ...
- 萌新学习Python爬取B站弹幕+R语言分词demo说明
代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...
- 手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02
在上一篇文章中,我介绍了自己的SpringBoot Starter项目,可以让我们使用注解的方式轻松地获取操作日志,并推送到指定数据源. 之前,我的项目开源在Github上,大家想要用我的项目,还得把 ...
- 致萌新与不会用 NOI Linux 的 OIer
全文绝大部分转载自:这篇好文章啊. 目录 1:GUIDE 2:Gedit 原文 打开 编译运行 3.Vim 3-1:这东西咋开啊 3-2:这东西咋用啊 4.编译与运行 5.调试 6.CSP竞赛中编写代 ...
- C语言编译器CL.exe
下载地址CL.7z版权问题:仅供学习交流,请于24小时内删除,本人不承担版权问题… 基本使用: 1.解压缩,例如解压缩到E盘根目录下 2.打开cmd命令行界面(快捷方式win+R输入cmd回车)cd命 ...
- 我发起并创立了一个 C 语言编译器 开源项目 InnerC
本文是 VMBC / D# 项目 的 系列文章, 有关 VMBC / D# , 见 <我发起并创立了一个 VMBC 的 子项目 D#>(以下简称 <D#>) https: ...
- 萌新web前端从零开始(1)——计算机入门
前言:这是一个萌新从零开始的学习之路,与大家分享自己的看法与见解,还请指出错误与遗漏点方便改正. 1.认识计算机. 计算机语言常见的有C,PHP,Ruby,Java,C#,Basic,JS,C++等, ...
- 萌新笔记之堆(heap)
前言(萌新感想): 以前用STL的queue啊stack啊priority_queue啊,一直很想懂原理,现在终于课上到了priority_queue,还有就是下周期中考,哈哈,所以写几篇blog总结 ...
- 大数据萌新的Python学习之路(一)
笔记开始简介 从2018年9月份正式进入大学的时代,大数据和人工智能的崛起让我选择了计算机专业学习数据科学与大数据技术专业,接触的第一门语言就是C语言,后来因为同学推荐的原因进入了学校的人工智能研究协 ...
随机推荐
- DBUtils工具类的使用
DBUtils工具类1.DBUtils工具类,由apache组织提供的工具类,对JDBC做了一些简单封装. 做了查询的封装,把查询的结果封装到List集合 Map集合 JavaBean对象中 做了增删 ...
- xmanager连接redhat(centos)
1.以连接Centos6.5为例,先关闭防火墙 service iptables stop chkconfig --level 345 iptables off 2.安装XDM,通过 XDMCP 支持 ...
- 解决ajax请求返回Json无法解析"\"字符的问题
原因:获取身份证信息,涉及图片路径,存在“\”字符,导致Json解析错误 解决思路:将返回类型从"json"改成"text",此时返回的数据类型变成字符串,将字 ...
- Gradient Optimization
Gradient Optimization Gradient Descent Batch Gradient Descent Mini-Batch Gradient Descent Stochastic ...
- 在Eclipse中生成javadoc
在<thinking in java>一书的第一章提到javadoc,以前也看过,每次看到这部就跳过了,没有真正去尝试过什么样子,今天终于亲自实践了一下,原来真的挺简单:一.编写java源 ...
- JQuery extend()与工具方法、实例方法
使用jQuery的时候会发现,jQuery中有的函数是这样使用的: $.get(); $.post(); $.getJSON(); 有些函数是这样使用的: $('div').css(); $('ul' ...
- pm2在node中的应用
pm2 是一个带有负载均衡功能的Node应用的进程管理器,当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, pm2是完美的. 主要特性: 内建负载均衡(使用Nod ...
- AtomicInteger关键字
validate 关键字可以保证多线程之间的可见性,但是不能保证原子操作.(需要了解java内存模型jmm) package com.cn.test.thread; public class Vola ...
- centos7安装java开发环境
一. 安装jdk 1.进入oracle官网下载jdk-8u152-linux-x64.tar.gz,用WinScp将文件上传到/usr/local文件下 2.解压:执行命令 tar –xzvf jdk ...
- js控制input text字符键入/字符长度限制/字母自动大写
功能: 1.仅允许指定字符键入 2.限制长度 实现代码: <input type="text" style="width: 6em" name=" ...