一直把计算机当成自己的爱好,花费了大量的时间学习各种相关知识,然而现在才明白自己什么都没有学好,或者说自己学习的东西没有几个是有用的。我会配电脑,会安装系统,还可以解决和系统有关的一些问题,甚至可以编写一点简单的小程序,然而就止于此了。大学四年,做了无数没有结果的事情。
现在明白了自己新的努力方向,也知道了要怎样去学习,把已经学会的一些东西好好整理一下,为下一个学习打个基础。 计算机相关知识可以分为硬件知识与软件知识两大部分(这里说的不包括如何安装计算机与使用工具软件)。硬件知识,或者说计算机组成原理,以数字电路为基础;软件包含了各种编程技术,只要需要编程实现的都算在软件知识之中。
在这个寒假之前,一直不理解计算机运行的原理。虽然大学课程中《电工技术》中涉及了一些关于数字电路的内容,但是当时自己学习并不用心;之后自学了一部分《计算机组成原理》,依然没有搞懂计算机运行的机制。直到这个寒假,看了《编码:隐匿在计算机软硬件背后的语言》之后,才真正搞明白计算机的最基础组成部 分。在此,不得不对Charles Petzold表示佩服:同样的知识,别人写得就是简单明白,初学者就能看懂。这本书完全可以成为计算机专业的入门教材,也是计算机爱好者的必读书。看完这本书,你就能对现代计算机的运行的硬件基础有一定的了解,可以作为计算机专业的人继续学习《数字电路》、《计算机组成原理》的基础,也可以 为爱好者提供足够的基础硬件知识。
至于软件知识,自己将其分为分为编写本地应用程序、编写Web应用、数据库,又可以细分为微软体系与开源体系两部分(其实这两个体系的组成都差不多)。
本 地应用程序就是运行在本地计算机上的程序,不一定需要互联网,或者说对互联网的依靠较低的程序,比如:WPS Office、千千静听、Visual Studio、AutoCAD、PhotoShop、杀毒软件等,另外QQ、网游客户端、服务器编程在一定程度上也可以算做本地程序。
Web 应用则主要是网页编程了及服务器编程。网页编程,或者叫前端编程,主要是以CSS、HTML、Javascript、Xslt、Xml为基础的AJAX,以及现在很火的RIA技术(以Flash为代表);服务器编程,或者叫后端编程,则有很多种,比如说开源世界的 LAMP(Linux,Appach,MySQL,PHP),微软的ASP.NET。 常用的计算机语言都有自己特点,又因其特点常常用来做某种开 发。C/C++常常用做本地程序开发(现在则主要用在开发高性能程序如游戏开发),JAVA什么都行,目前主要用在服务器后端,移动程序、C#与VB 等.NET平台的语言则什么都行。单纯用一种语言是很难进行开发的,想要通过编程达到自己的目的,为这个语言开发的库类或者说框架是必需的。
先说我对微软编程体系的理解,目前微软编程体系的核心是.Net Framework,它提供了从本地应用程序到Web应用的所有支持。它提供了两类模板,分别为Windows应用程序模板(WindowsForms) 和Web应用程序模板(Web Forms和WebServices)。我们可以使用.NET Framework支持的各种编程语言,比如VB、C++、C#等。想要学习开发,首先学习一种编程语言的语法,比如现在很火的c#,此时主要侧重语言本 身,主要编写的是控制台程序(就是那个黑黑的界面下的程序);然后学习算法(还是是在控制台下);再就是WindowsForms开发,此时就能开发一些 有界面的(如写字板、QQ)那样的程序。如果想进行网页开发,则在算法学习完成后,开始学习HTML、CSS、XML、JavaScript等知识,之后 再学习ASP.NET。
微软的技术很好,将很多复杂的东西都给包装了起来,对于我们爱好者学习来说很方便,可以跳过一些技术的学习,进行快速开发。比如一边学语法,一边学WindowsForms。
开源体系也差不多,只是不像微软的平台那么统一,本地开发有QT(C++)、GTK+(C)等开发体系;网站开发则使用各种脚本语言,如PHP、Ruby、Python等。
数 据库之所以单列出来,是因为它的特殊性与专业性。数据库知识对专业开发者非常重要,对于像我这样的爱好者来说并不是必需的。目前常用数据库主要是关系型(SQL)数据库,还有比较火的但是还没有大量使用的NoSQL型数据库。关系型数据库中常见的有:MySQL、SQL services、Oracle、Access。
对于我这样的爱好者来说,只要学习容易、功能齐全就行了。就这方面来说,微软的VB,c#做得很好;开源世界的Python也是很适合新手入门的。