从零开始学习C语言丨初识编程
本文发布于微信公众号:三玹
你知道现在的编程总共有多少门吗?
这个问题整得我横竖睡不着,打开电脑一查,从字里行间只看到了两个字,“很多”!
是的,现在的编程语言可以说是汗牛充栋、不计其数。甭说所有,就现在常用的十几二十种编程语言,就足够一个人穷极一生去了解、研究,而且都未必样样都学得精通。
为什么编程语言会如此之多呢?
在网上有这么一个梗,恰好说明了这种现状:很久以前有个年轻人,来到了编程界。当看到这方世界竟然秩序混乱,久久不能统一。不忍看到这个世界再继续混乱下去,于是年轻人许下豪言壮志,誓要做出一套可以一统编程界的语言。
后来,编程界就又多了一门编程语言……
回归正题,什么是编程?
顾名思义,编程就是编写程序,也就是程序员将解决问题的步骤用编程语言编写成代码程序,然后交给计算机去执行运算,从而达到计算机可以重复解决问题的目的。
打个比喻:假如程序是一本菜谱,那么程序员就是写菜谱的大厨,编写代码的过程就是在写菜谱。而不会做菜的人就是计算机,他们收到了大厨写的菜谱,按照上面条令执行,至少能做出像模像样的菜。
而编程语言就是大厨写菜谱时所使用的语言。比如大厨是中国人,那么他写菜谱时所用的语言是汉语。如果是俄罗斯人,那他用的是俄语。那么,想让普通的俄罗斯人也能看懂中国大厨写的菜谱,首先需要将中国大厨写的菜谱用俄语翻译一遍。翻译的这一过程,在计算机中也被称之为编译。
目前,主流的、且工作上用得比较多的编程语言有:C、Java、Python、C++、C#、JavaScript、SQL、Ruby、PHP、Go、Swift等等。如此众多的编程语言,它们之间也是各有不同,按照编译以及运行方式可以分出以下两大类:
编译型语言
代表语言:C、C++、C#、Go等。
通常是将代码一次性全部编译为二进制码(计算机看得懂的语言:10010101),然后再一次执行。
编译型语言的优势就在于执行速度要比解释型语言快得多,而且消耗的内存也更少。
缺点在于编译器远比解释器要难得多,而且在调试过程中,编译器往往提供不了太多的帮助,同时编译型程序是面向特定平台,对平台有一定的依赖性。
解释型语言
代表语言:Python、Java、JavaScript等。
有专门的解释器。首先将代码翻译为中间代码,然后交给解释器对中间代码进行解释运行,编译一行,运行一行。
解释型语言最大的优势是具有平台独立性,不受限于任意平台,对平台的依赖性没那么高。只需要拥有相应的解释环境,就可以在任意平台使用。
缺点就在于解释型应用会占用更多的内存和CPU资源,同时解释型应用需要进行【解码-抓取-运行】的周期,因而整体速度要比编译型程序要慢很多。
把这两个大类比作是两个工厂。
A工厂是编译型语言,一次性将所有产品都做好了,然后上交给相关部门进行检查。如果产品质量过关,那么A工厂就可以迅速抢占市场。但要是发现了质量不过关的,就得重新返工,一个个去寻找质量不过关的产品。
B工厂是解释型语言,这个厂的厂长非常谨慎,每做好一个产品,就提交一次检查。虽然这样的速度会非常的慢,但胜在保稳。如果发现了错误,那么及时将有问题的产品返工重做,不需要费时费力地去检测所有产品的问题。
面对如此众多的编程语言,该从哪个开始?相信这是许多初学者的烦恼和顾虑。
其实这个问题很简单。根据自己的兴趣选择,兴趣就是最好的老师。例如你想做游戏,可以入手C++或者C#;想做Web网站系统的,可以选择Java;想做机器学习的,可以着手Python。
当然,如果你不太清楚自己对什么有兴趣,那么我的建议是以下两点:
如果是在校学生,或者时间较为充沛,同时想成为职业选手的朋友。可以先学习C语言入门编程。C语言被称之为现代编程语言之母,学习C语言可以了解一些底层基础,到后面学其他语言就会事半功倍。
如果是业余学习,或者急于求职的朋友,那么可以根据兴趣或者求职意愿和方向去选择性学习补强。比如要做前端的,重点学习JavaScript、TypeScript等;后端系统的,可以学习Java、C++;爬虫、数据分析类的,可以学习Python。
学习最重要的就在于一个“勤”字,编程学习也是一样的。
勤动手,勤思考。如果想要让自己的编程技术更快地长进,勤敲代码是必不可少的,毕竟熟能生巧。同时在敲写代码的时候,加入一点点思考,比如为什么这段代码是这样敲的?这样敲的理由是什么?有没有更好的方法让这段代码更简洁、更好用?在学习、练习的过程中,多问自己几个为什么,怎么样才能做得更好,想得透彻了,那么成长就只是时间的问题了。