2009年6月16日星期二

编程是一门艺术


        世界上的万物本来就是相互作用、相互影响、相互联系的,代数是用数字来表达世界,几何用图形来表示世界,语文是用文字来说明世界,计算机是用0和1来记录世界,虽然表现形式不一样,但本质却是一样的。人类用语言来相互交流沟通,人类与计算机是用编程语言来相互交流的。

        说到底,我认为编程纯粹就是一种思维的活动,编程语言就仅仅作为一门人与计算机交流的工具而已。编程语言就像人类的语言一样,在人类的语言中有汉语、英语、德语、法语、日语;在编程语言中有C++、Java、C#、PHP,同样有优劣、是否流行之分。语言本身自古以来就扮演着非常重要的角色,没有语言,就没有人类今天伟大的文明。自然而然地,语言就成为了一门学问,一门艺术。

        俗话说:“看菜吃放,量体裁衣”。说的就是说话要看对象。这编程语言也一样,要根据不同的需求来决定用哪门语言。具体问题具体分析,如果要做操作系统,那么你必须要用大量汇编语言混合C语言来做。这样作出的操作系统相对来说性能才会更高,运行的速度才会更快。但是如果要做一些桌面软件或者银行系统的话,那么用Java或者C#会更加合适。 而开发一些网站,用PHP则会更加合适。

        文明既然是由于人类长期劳动而派生的产物,那么,它就与人类的活动是息息相关的。 水永远是鱼儿赖以生存息息之地,天空是雄鹰得以翱翔的地方。软件道理也是一样,Windows的应用程序不能在Linux平台上运行,Linux上的程序不能在Windows平台上运行。之所以不兼容,是因为平台不同。

  


 













       既然编程语言是人类的杰作,那么人一定赋予编程语言人性化的思想。就像这Java或者C#就是典型的纯粹的面向对象语言。这是一种新兴的编程思想,与过去传统的面向过程的思想编程完全不同。

        举一个运动员射击的程序

        按照传统的面向过程的思想编程:首先你要通过编程依次实现运动员拿枪,装子弹,举抢,瞄准,扣动扳机.总之,就是一步一步地顺序地实现编程.

        但是,按照面向对象思想:首先你要考虑要想实现运动员射击的程序,有哪些类和哪些对象,应该需要运动员类,枪类,子弹类吧。

        在考虑一个类里有哪些属性和方法,属性和方法要放在合适的类里。至于实现的细节暂时不必理会,主要封装在方法里了.在考虑类之间的联系,再处理好类调用之间的关系。      

        就具体那Java语言来说吧。

        Java语言最重要的三个特征就是——类的封装性、类的继承性和类的多态性。

        类的封装性

        1、隐藏类的实现细节。  

        2、让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作。

        3、便于修改,增强代码的可维护性。

        4、可进行数据检查

        1和2尚且好理解,可是3和4应该如何来理解呢?

        对于3,我觉得就是面向对象的一个重要特点,开发程序的时候,对于一些常用的方法或函数或者一些反复出现的常量变量等,都可以把他放到一个类里封装起来,这样,如果需要修改这些中的一个的话,就可以很方便了,不用去检查所有出现这些变量或函数及方法的地方了,便于维护。

       对于4 以便对于需要用户输入数据的程序JAVA中一般会提供set和get方法来设置和读取数据,这样就可以在set方法中先检查数据是否合法,而不是让用户直接来操作变量。


        类的继承性

        1、在java中通过关键字 extends 继承一个已有的类,被继承的类成为父类(基类),新的类称为子类(派生类图片)。

  2、在java中,不允许多继承

  3、在子类中定义一个与父类同名、返回类型、参数类型均相同的一个方法,称为方法的 覆盖。

  4、覆盖 发生在子类与父类之间。

  5、特殊变量super 提供了对父类的访问。

  6、可以使用super 访问父类被子类隐藏的变量和覆盖的方法。

  7、每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类没有构造方法,那么在编译的时候就会报错。

        类的多态性

  1、通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。

  2、简单概括多态性:当我们将子类对象的引用传给声明为父类的一个对象变量,如果子类有这个方法就调用子类的方法,如果子类没有这个方法就调用父类的这个方法。

  3、多态性的好处:它可以根据在运行的时候,根据我们传递不同对象的引用,来调用不同对象的方法。

       

        我认为Java的三个特性在很大的程度上是跟生物学和管理学相关的。

        再说说成员变量和成员函数吧。其实,这成员变量就像对象存在的一个属性仰或说状态。就那人来说吧,人的生死就是一种状态,性别就是一种属性。

        而这成员函数就根据这不同状态或者属性来处理一些逻辑。就像人饿了要吃放,渴了要喝水一样。

        在这里还涉及到一个重要概念——事件,程序一般都是按照事件来驱动的。就像运动员射中目标了或者没射中目标,这就是一个事件。

        至于裁判要给多少分,可以把裁判作为一个监听器来处理,要给多少分就是监听器要处理的逻辑。

        一个应用程序都是有其规律性可言的。它就像世界的万物一样,有生老病死。一个应用程序相对应的生命周期那就是——初始化状态,运行状态,暂停状态,销毁状态,其中不同的状态一般对应一个相应的方法。

        其实,我认为一个应用程序抽象出来也不过只有5种最基本简单的操作——创建,插入,删除,修改,查询。

        因为世界本来就很简单。

2009年4月9日星期四

Ubuntu 8.10 安装常用软件


安装词霸星际译王
sudo apt-get install stardict stardict-common


以Root权限打开文件夹(右键菜单)
sudo apt-get install nautilus-gksu

终端加到右键菜单
sudo apt-get install nautilus-open-terminal

安装虚拟软件(打开Windows程序)
sudo apt-get install wine

安装Adobe Reader
到Adobe网站下载Ubuntu版本的Adobe Reader,点击这里,然后双击安装

安装Google Chrome浏览器
界面比Firefox更友好,浏览速度更快,到Google下载Ubuntu版本的Chrome,点击这里,双击即可安装

安装Mplayer播放器,比系统自带的电影播放器好用
sudo apt-get install totem-xine ffmpeg lame faad sox mjpegtools
sudo apt-get install mplayer mplayer-fonts gnome-mplayer

安装飞鸽
sudo apt-get install iptux

安装打开chm文件的软件
sudo apt-get install chmsee

安装FTP
sudo apt-get install vsftpd  # FTP设置文件/etc/vsftpd.conf,详细配置情况,参考http://wiki.ubuntu.org.cn/Vsftpd

安装FTP客户端
sudo apt-get install filezilla

Ubuntu Server 下 Apache的安装和设置
https://help.ubuntu.com/community/ApacheMySQLPHP
http://www.91linux.com/html/linux_pub/ubuntu/20080506/10670.html
PHP以CGI方式安装
https://help.ubuntu.com/community/lighttpd#PHP
https://help.ubuntu.com/community/HelpOnInstalling/FastCgi
https://help.ubuntu.com/community/DinkelVersus/ApacheServer
http://blog.chinaunix.net/u/6140/showart_458158.html
http://www.seaoffire.net/fcgi-faq.html
http://typo3.org/development/articles/using-php-with-mod-fcgid/page/3/
ubuntu 安装PHP扩展php-curl
sudo aptitude install php5-curl