大多数大学生接触的第一门编程课即是C语言,这对于一个彻底不懂计算机的人多是噩梦。前端
很多人初次上C语言课都会被指针绕得晕头转向,然而大部分编程工做并不须要你关心指针的使用。此外,C语言对可视化编程并不友好,用C语言编写图形化界面十分繁琐。在这种状况下,不少大学生都会问C语言能作什么?程序员
C语言看似简单,实则无比强大,它主要的用途是系统级编程,操做系统,数据库,编译器,虚拟机等等,但是,并非每一个人都愿意去尝试或者有机会接触。算法
这会致使大多数人学了C语言并无多少成就感和兴趣,甚至由于这门课怀疑本身能不能学好编程,或者拿到计算机专业的毕业证。数据库
事实上,这样想是多虑的。并非每一个计算机专业的学生未来都要去搞操做系统,编译器或嵌入式开发,应用型人才大有可为。你彻底能够先从应用层入手,得到成就感和兴趣,再深刻钻研底层开发。编程
在我眼里,编程是世界上最好的工做。既能够凭此得到报酬,还可做为兴趣爱好,享受解决问题的那种成就感。因此,当你第一次学编程或者对编程开始失去兴趣时,不妨从Web入手,先作一个网站。Web开发所用到的语言大多数都是所见即所得类型,学了立刻能够作出一个可视化的做品,颇有成就感。后端
Web开发是最简单的,并且开发语言也多种多样,好比JavaScript、PHP、JAVA、Ruby、Python等。互联网上关于Web开发的学习资料是最多最丰富的,大多数问题均可以经过搜索引擎找到解决方案。这对初学者十分友好,下降了编程的挫折感。浏览器
尽管受到移动互联网的冲击,但不能否认,网站是互联网最广泛的应用形式,并将长期存在下去。若是你想作Web开发,Just do it!服务器
Web开发分为先后端,前端包括HTML、CSS和JavaScript等,后端包括Node.js、JAVA、Python、PHP、Ruby等。若是你想作一个静态网站,只须要学习前端技术便可。网络
前端技术自己难度不大,但浏览器适配和响应式布局稍微有点棘手。初学者彻底没必要理会,先作出一个静态网站便可。当你作出初版静态网站时,你必定会兴奋,由于这是你本身的做品。数据结构
网站作好后,你可能想更新网站内容,但手动更新又比较麻烦。这时你能够选择一门简单的后端语言,尝试下服务器搭建、先后端数据交互和Linux命令行操做等等。后端技术优先推荐Python、PHP和JAVA,三者选其一便可。
人生苦短,我用Python。Python内置了大量丰富的函数供你直接调用,有些语言写不少行的函数,Python一行代码搞定。此外,Python做为程序员必备的脚本语言,在爬虫、科学计算、AI等领域也很出彩。利用这个机会学习下,技多不压身。
除了Python,PHP效率也不低。做为世界上最好的语言(:-D),PHP为Web而生,PHP能够直接嵌入HTML标签,十分方便。经典的LAMP或者LNMP搭配更是世界上绝大多数网站的标配(L:Linux,A:Apache,N:Nginx,M:MySql,P:PHP)。
最后推荐的当属老大哥JAVA,在国内可能就JAVA程序员最多了,因此学了就业确定不愁。不过,JAVA的难度要Python和PHP稍高点。
学了后端语言后,你能够作一个动态网站了。不过,还差一个数据库,推荐MySQL。若是你不想学SQL语句,能够寻找后端语言对应的MySQL图形管理应用。可是,当你的数据量较大或者常常存取数据时,建议学习下基本的SQL语句以提升效率。
当你前端和后端都学完了,你就能够随性所欲的作你想作的网站。作出来后,记得分享给你的好友和家人,他们的鼓励是你前进的动力。
这就完了吗?万里长征才刚踏出第一步。
为何个人网站这么慢?多是由于前端静态资源CSS或者JavaScript太大或者加载方式不对。你得学习下代码优化、静态资源压缩打包和页面渲染原理吧。
为何查询数据怎么慢?你得学习下数据库优化吧。
有小伙伴想和你一块儿开发网站,怎么让别人快速看懂你的代码?你得学习下代码模块化(低耦合,高内聚)和接口设计吧。
为了使你网站稳定,你还会遇到不少问题。但经过前面学习,相信你已经学会了如何独立排查和解决问题了。独立解决问题的能力是程序员最基本的能力之一。
网站稳定了,你可能想设计出相似于热门内容和推荐内容等。一看须要用到排序算法和推荐算法,恍然大悟,数据结构和线性代数被你学成了狗屎。不停的责骂本身,当年上课的时候干啥去了。
不要着急,相信你如今回头再去看时,必定能学进去。由于学了,你立刻就能够用。如今你终于明白,数据结构中的时空复杂度、线性表、栈和队列、树、图、排序和查找是怎么用的。
诶,课本里的C代码怎么和我写的Python和JAVA这么类似。仔细搜索发现,C语言才是这些语言的祖师爷。顿时心生悔意,要是当年好好学C语言,如今也不会这么吃力。种一棵树,最好的是十年前,其次是如今。赶忙学吧,少年!
如今网站也像模像样了,想知道浏览器怎么运行的吗?HTTP协议是啥?不用搜了,赶忙回去看计算机网络,”三次握手”必须烂熟于心。
终于有一天,服务器死机了。这下你得学习下服务器运维,了解下服务器工做原理吧。世界上绝大多数服务器系统都是Linux,Linux系统你得学习下吧。
多线程多进程貌似见过?你已经学过了,就在操做系统那本书里,老师讲的时候你没认真听。这下你恍然大悟,原来学校里的课是有用的,只是本身没发现。这样你又回去把计算机组成原理和微机接口原理复习了下,了解了Byte和Bit的区别,了解了二进制编码,了解了汇编语言等等。
大道至简,心中有剑于无形。如今你明白了,编程语言只是术,而计算机基础课才是心法。万变不离其宗,你再也不恐惧编程,也再也不把本身限定在某一种语言。你开始不知足于只作网站,你想作APP、游戏、编译器或嵌入式开发等。
经过以前的学习,你学会了如何用项目去驱动学习,学会了独立解决问题,学会了快速上手一门编程语言,学会了先后端如何交互等等。即便你之后不作Web开发,这些能力都是通用的,伴随你一辈子。