新手学编程需了解的入门介绍
一、平台
平台一般分为桌面平台和移动平台还有就Web平台,下面就分别讲讲。
1、桌面平台
桌面平台以操作系统来分类,分为Linux、Windows和Mac三个平台。
Linux
Linux是著名的黑客Linus在大学开发的开源操作系统,建立在早期的Unix内核基础上。由于它优良的特性及开源的管理方式,吸引了全球大批的开发者使用。Linux一般是用于服务器,因为它作为一个操作系统来说本身极其优秀,适合在后台作为服务器系统持续稳定地运行。 Linux上的编程是比较基础的,考察你对命令的掌握情况,不过对于新手的话,还是有一定难度的。虽然号称掌握了Linux就说明是个大牛,但是至少这种言论是片面的。不过学习Linux确实能提高对计算机的理解能力,这方面比较好的书有一个叫[《鸟哥的Linux私房菜》](http://vbird.dic.ksu.edu.tw),专门为学Linux写的好多书,业界评价很高。
Windows
Windows是使用最为广泛的操作系统,粗略分类也可以为分个人用户版本(专业版,基本版,家庭版等)和服务器版本(Windows Server)。不过由于Win10的推出,Windows现在实行全平台统一内核的方式管理,又新增了嵌入式版本的Windows。 Windows上的编程是最基本的,因为绝大多数人都在用Windows。从QQ到英雄联盟,从快播到书店管理系统,从ATM到银行交易,基本都是在用Windows(当然,很大一部分后台都是Linux。Windows和Linux是最重要的操作系统)。Windows下有很多的编程框架,大致可以分为两种:一种是微软出品的(限于Windows就是微软的)以.NET为代表的编程框架,另一种是其他第三方的平台。
以前的.NET只能运行在装有特定版本的Windows操作系统上。.NET伴随着Windows的更新也一直从1.0升级到如今的4.5.以.NET为母体,如今微软将.NET开源了,苹果和linux都可以用了。通过mono,可以在各个操作系统上调用.NET。不过,真正拿.NET主力开发的,恐怕大多数还是windows吧。有MFC(C++,非常古老)、WinForm(C#,主流)、WPF(C#)等编程框架。
- MFC:很古老的一种编程框架,用C++写的,有控件,有事件,有服务,很完备。缺点就是东西太古老,不好用,现在各高校仍然有课程在用(比如图像处理等),但是做这东西事倍功半,不推荐;
- WinForm:非常主流的编程框架,很多软件都是用这个框架做的。用C#作为编程语言,运行很稳定,好上手,开发成本低。
- WPF:微软新推出的编程架构,界面很绚丽,用XAML+C#作为开发语言,优秀的MVC架构,是未来的趋势。可惜发布时伴随着Vista系统的失利,加上其本身庞大的资源消耗,所以基本上没有多少人在用。不过它的思想是先进的,一路走来赶上win8和win10(商店应用)都是在用的。
非.NET平台的框架一般都可以跨平台使用。
- Qt:诺基亚出品的编程框架,用C++开发。有自己的界面库,支持跨平台。在前些年很火,不过现在不流行了。
- Java平台:Java本身是个语言,但是基于Java有很多开源的框架和平台,如Swing等,都提供自己的控件。不过运行效率太低,因为Java本身就是个虚拟机。目前随着硬件平台效率的提高,已经不是问题。绝大多数服务器后台都运行的是java。
- 还有其他的平台,在Windows上使用率基本很少。
Mac
Mac是苹果专用操作系统,苹果系统很大一部分软件都是用Mac下的软件开发工具做的。Mac下的开发框架叫Cocoa,iPhone下的叫CocoaTouch(多了个touch)。当然,Mac下的软件也可以用上面的跨平台的框架来开发。这方面不做过多介绍。
2、移动平台
现在最火的就是移动平台了,这一点毋庸置疑,移动平台包括安卓Android、iOS、Windows Phone,当然还有现在出的鸿蒙。
- 安卓Android:一个开源的操作系统,在2008年首次推出,之后由Google收购,到现在是最火的操作系统。Android的内核是基于Linux的,由于其开源的特性,所以很好定制,使得Android在短短几年内迅速占据移动操作系统的三分之二。 Android开发是基于Android提供的SDK(软件开发包)进行的。主要的开发语言是Java(用来写后台逻辑)和XML(用来写界面)。 Android开发有一些书,这方面比较有代表性的是[《疯狂Android讲义》](疯狂Android讲义_百度百科). 早期(2013年前)Android的开发环境是Eclipse,配合Android的SDK、模拟器等,后来Google推出了整套的Android Studio进行安卓开发,效率非常高,现在基本都在采用Android Studio进行开发。
-iOS:苹果iPhone以及iPad上的操作系统,只能在苹果机开发,只能用在苹果产品上。iOS是一个及其优秀的移动操作系统,安卓在发展的早起,很多都是借鉴了iOS的开发经验做的(当然,后来就互相抄袭了)。iOS开发使用苹果出品的XCode软件进行,这个软件还可以用来开发Mac下的软件。XCode是一整套的开发工具的集合,可以设计界面、进行调试、上传到应用商店等。iOS开发使用Objective-C编程语言和Swift编程语言,后者是苹果在2013年6月推出的新一代编程语言,集合了当下所有语言的优良特性,大有取代Objective-C的意思。所以Swift一直很火。
-Windows Phone:Windows Phone是微软出品的手机操作系统,现在已升级到了Windows Mobile 10.它的开发环境是Visual Studio,用C#进行开发,基本就是windows下开发软件(WPF)的模型是一致的。虽然我在大学做的最多的就是WP(因为上手快,微软的教程给力),但是它的市场占有率多年来一直升不上去。希望得益于Windows10的爆发,能给点力。这方面不给教程了。
3、Web平台
Web平台的编程基本是基于服务器的编程。这方面分为网页(前端)和服务(后端)。
前端
前端就是我们所看到的网页。比如[百度](百度一下,你就知道)的首页很朴素,[QQ浏览器](QQ浏览器9官方网站 - 浏览器_浏览器下载_微信电脑版)的首页就很酷炫,等等。这些是用什么实现的? 实现语言会在后面再介绍。概括来说
- html是所有网页语言的鼻祖,网页都得用它;
- CSS就是一个样式选择器,那些字体、颜色等都是用的CSS来控制的;
- javascript是网页脚本(它可和java没有半点关系),是用来写简单的后台逻辑交互和前端界面交互的;
- html5是最新的html的版本,支持众多的界面特性。QQ浏览器的首页就是用html5做的。
后端
后端是用户看不到的,小到注册一个用户,大到处理几十万的数据,都是后端来做。这方面典型的开发语言是C++、Java、php和python、ASP等。 后端是基于服务器进行的开发。基本上在软件工程中处于很顶级的地位。这方面用Java开发是业界很流行的,因为Java没有C++那么难写,本身又有很多框架,比如Spring等,非常适合写后台的数据交互。
二、语言
计算机编程语言有几百种,小到智能手机,大到服务器集群,都运行着各种各样的编程语言写的程序。没有哪一种程序就比另一种高贵,都各司其职,完成我们交给他们的任务。
计算机专业的学生一般学习编程都是从C或者C++开始的。这两种语言在大多数高级语言中出现较早,影响力也很大。对于计算机专业,当然要学好这两种语言,才能为以后学习其他语言打下基础。
对于非计算机专业或者以前从没接触过编程的同学来说,不建议上手就学C和C++,因为它们偏难,而且并不是必须的。对于这些背景的同学,十分建议学Python。因为Python首先是跨平台,然后,没有特别复杂的语法(至少完成日常使用不需要),最重要的是,有各种各样的包能支持你做各种各样的事情!
C
C是基础性语言。它不是面向对象的,是面向过程的语言。C诞生于1972年,其优良的特性很高的效率使它长期占据编程语言排行榜第一名。C可被广泛用于桌面、服务器、嵌入式开发中。
C++
C++可以看作是对C的扩展,增加了面向对象的机制。什么是面向对象?简单来说就是,所有的要操作的物体都是对象,比如一个人是一个对象,一条狗也是一个对象。接着就可以在对象上定义操作,比如人走路是一个函数,人吃饭也是一个函数。这样设计的好处就是可以封装起来多次使用,也可以进行继承。保留总体的相似性,又不失个体的个性。比如张三和李四都是继承人这个类,但是张三吃饭要3分钟,李四就要10分钟,这就是个性。面向对象设计的思想可以在[这里](什么是面向对象编程思想? - Java - 知乎)找到进一步的阐述,这基本是所有现代主流语言的基础。会面向对象,所有的语言学起来特别快。 C++可以被广泛用于桌面端、服务器和嵌入式的编程,使用程度非常广泛,但是由于它的语法很难(主要是指针操作)、没有现成的SDK进行封装,所以并不是很适合用来写移动端的应用。 可以认为,C++什么都能干,它太基础了,效率是高级语言中最高的,但是术业有专攻,它并不是都适合写各个平台的应用。
C#
C#是微软是2000年推出的在.NET平台上的编程语言,没有指针,集合了大多数面向对象语言的精髓,好学好用,效率也不低,是主流的windows桌面应用和部分windows服务器后台的编程语言。
Java
Java和C#类似,差不多简单。但是Java是跨平台的,可以写桌面、移动(安卓)和后台服务器,用处非常广泛,框架也最多。
html
html和javascript、css等都是开发网页前端界面显示的语言,是很轻量级的。
php
php是用来开发服务器后端的语言,非常好学好用,语法很简单。
python
Python是一种脚本语言,执行效率很低,但是语法异常简单,c++写几十行的东西,它几行就可以搞定。Python理论上可以用在任何地方,但是基本上常用于后台服务器和一部分科学研究。作为脚本语言,Python是优秀的。
ASP.NET
ASP.NET是微软出的写服务器后端与部分前端的框架。用C#和html编程。
其他
其他语言还有几十种,但是都不是很常用。这是不再介绍。 学会面向对象编程思想,走遍天下都不怕。
三、工具
Visual Studio
微软出品的宇宙最强编程工具,没有之一。 VS可以被广泛用于桌面、服务器和移动端的编程,最新的VS也可以用来做安卓和iOS,其性能之彪悍功能之强大是宇宙第一。写C、C++、C#的天然平台,也可以用来写Python、html等。
Eclipse
Eclipse是免费开源的软件。它是一个软件平台,配合丰富的插件,可以用来写Java、php、C++、Python等,用来写桌面、服务器应用。
intellji IDEA
Intellij IDEA是捷克Jetbrains公司出品的收费的编程软件。是Eclipse的替代品。可以把它叫做java界的Visual studio。用来开发基于Java的任何应用。Android Studio就是基于这个软件的框架进行开发的。
Android Studio
开发安卓的集成工具。
XCode
XCode是用来开发iOS和Mac下的软件的,也就是说它只能运行在苹果电脑上。XCode可以编写的语言主要有C/C++,Objective-C以及swift等。其他XCode个人感觉并不是太优秀,有很多不如人意的地方,不过没办法,你想做苹果的东西只能用这个。JetBrains公司出了一个Mac下写苹果软件的IDE叫做AppCode,我也用过,体验还可以。不过话说回来,有官方的东西就有官方的支持,用第三方的难免会出现不必要的问题,最多也就当个备用吧。
PyCharm
PyCharm也是JetBrains公司出的专门用来写Python的IDE。它基本可以说是Python界的Visual Studio,想要的功能基本都有。更新也很频繁,目前我一直在用它。
四、辅助
数据库
数据库是存储数据的媒介,所有后台数据交互的都必须有数据库参与。目前最常用的数据库有Oracle、SQL Server、MySQL、MongoDB等。数据库独立于编程语言,由特定的SQL语法进行支持。
Github
[Github](Build software better, together)是世界上最大的开源软件管理平台。本文就托管在github上。世界各地的程序员把他们写的各种类型各种语言的代码托管在github上实现共享,有利于软件行业的发展。git代码管理平台是现在最火的版本控制工具。 iOS、安卓等有很多有名的项目都是托管在github上的。
网络课程
现在最火的受教育形式。 近几年,网络公开课越来越火,课程的数量和质量都不断发展,给了我们足不出户就能领略世界大师风采的绝佳机会,推荐的不错的有:
- [网易公开课](网易公开课),资源比较多,各个领域都有,里面有计算机板块,中国外国都有。上面说的MIT的算法,我们都是在上面学的,老师讲的特别好。另外它还有不断更新的TED视频,很值得一看。
- [coursera](Coursera | Online Courses From Top Universities. Join for Free),斯坦福机器学习大牛Andrew Ng联合成立的,上面都是外国大牛校的视频。我研究生课程里的机器学习就是学的这上面的,不错。
- [果壳MOOC学院](MOOC学院(慕课)| 发现全球在线好课),它只是一个公开课搜索中心,帮助你链接到各个mooc课程。
- [学堂在线](学堂在线-最大的中文慕课(MOOC)平台),清华主导的,网站做的不错,课程质量很高,这个是要着重推荐的,我也是最近才发现,上面的计算机和数值方面课程不错。
- [codecademy](Codecademy - learn to code, interactively, for free),这不是公开课网站,是一个手把手教你学习web语言的。这里有Ruby,python,html等热门web语言,而且教程设计丰富而有趣,感觉是学前端最好的地方了。
- 网络资源:大牛的博客什么的,这方面我就没什么好推荐的了,看你的水平去发掘了。百度和google你是当然离不开的了。翻墙什么的你自己去弄吧,反正百度没有的东西,你可以去google,google也没有,你可以尝试一下用英文搜索,效果非常好!这里推荐stackoverflow网站,只要你有解决不了的问题,用英文上google搜,如果stackoverflow里有类似问题,恭喜你肯定能解决。
- 书籍:我们计算机方面有很多经典的书,比如高德纳老爷爷的《计算机程序设计艺术》相信你一定听过,网上都有pdf下载,可以看一看。另外,我们这个方面像《XXX精通》等书太多了,而且基本都是大部头的,还能防身呢!这个推荐你能下pdf就下pdf,不然这么大,有个三五本就够你受的了。这些书都是当字典用的,千万不要从第一页码开始一页一页读!效率低而且你会发现没用。这都是你在遇到问题时去查的,不是让你真学的。
- 上一篇:没有了
- 下一篇:新手学炒股需要知道的入门知识