LINUX下编程入门.doc_第1页
LINUX下编程入门.doc_第2页
LINUX下编程入门.doc_第3页
LINUX下编程入门.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux下编程入门by Luster一、介绍 使用了Linux一段时间后,很多朋友都希望能为这个开放辕马世界做自己的贡献,更多的参加到这个open source的社团里。面对无数的自由软件,对于一个稍微不太普通的用户来说去解开一个tar文件,然后修改makefile去编译辕马都是很常有的。我们不满足简单的编译和使用别人的程序,我们应该亲自参加到这个开发辕马的创作之中。对于一个初学者来说,面对五花八门的开发工具,如何选择呢?使用什么开发工具去开发Linux程序呢?我们这里做个简单的介绍。这里是你成为Linux hacker征途上的第一步。二、编程模式 让我们开始第一步。作为一个初学者应该首先使用什么样的编程风格或者说编程模式呢?有很多的选择,例如基于函数的、基于过程的开发,还有面向对象的开发等等。要成为一个好的programmer,对于初学者,最好使用某种语言对各种编程模式都尝试一遍。Comp.lang.functional讨论组里面的FAQ中定义了面向函数的语言,说“a style of programming that emphasizes the evaluation of expressions, rather than execution of commands. The expressions in these language are formed by using functions to combine basic values. A functional language is a language that supports and encourages programming in a functional style. 在Linux平台下面,比较常见的面向函数的开发语言有:ML、Haskell、Scheme等。面向过程的语言是一种把程序要完成的动作分割成一个一个“过程(procedures)”的语言。一个典型的面向过程的开发语言的组织结构,我们可以看看流程图,就可以感觉出来。最常见的面向过程的开发语言就是Pascal和C语言了。面向对象的开发语言的核心就是用对象来表征所要执行的主体。例如要开发一个高速公路的模拟系统,他首先定义一个交通工具的类,包括所有交通工具的公共属性;然后继承这个类,可以派生出汽车类、自行车类等等。Linux平台下最常见的面向对象的语言是C+、Java、Python、Smalltalk和Eiffel等。还有混合的语言,你可以用多种编程模式去写自己代码,例如PHP和Perl。如何选择?一般来说最好每种模式都有一个了解。最好这样开始你的编程旅程,首先给自己定一个小project。有了一个清晰的目标后,选择编程语言和编程模式就容易了。如果使用某种语言开发起来容易,那么你就先学习使用这种语言。例如,我开始想学习更多的关于数据库和web编程的时候,我决定建一个书籍数据库,包括我拥有的书的信息还有我要计划购买的书籍信息。经过我的查找比较,我认为我的想法可以用PHP和MySQL来实现更方便。然后我就学习了PHP和MySQL的一些知识,完成了这个小的系统。我个人的编程体会,我至少使用了4种语言,包括:C、PHP、SQL和Perl。C语言是最灵活和方便的开发语言,在Linux下使用最多的开发语言就是它了。一旦学会了C语言,我们就可以非常容易的学习和使用其他的语言了。所以我建议你学习C语言编程。C语言是一种高级语言,它编写内核级的代码和驱动程序都非常方便。Linux下面有很多开发C语言的函数库和开发工具,我们都可以方便的使用它们,这也是使用C语言开发代码的好处。PHP是Hyper-text Processor的缩写,是一种解释执行的语言,一般来说运行在web服务器端。如果你会C语言,那么最多花一天的时间就可以学会PHP。PHP给你在web编程方面很大的方便。SQL是Standard Query Language的缩写,就是标准的访问数据的查询语言。很多PHP程序中都包含了使用SQL语言去访问数据库的代码。SQL基本上使用有点类似英文的语法,所以学起来非常容易。如果你学习PHP和C,那么SQL可以简单的顺便学习。Perl是一种使用比较广的教本语言。很多语法来自C和UNIX的SHELL工具。Perl拥有很多的可以添加的模块,在CPAN计划中。使用这些模块,开发程序编得非常容易了。 下面是一个perl程序例子:#!/usr/bin/perl # NMSU Job grabber # Matt Michie ()#-#Copyright (c) 2000, Matt Michie () (All rights reserved.)#Redistribution and use in source and binary forms, with or without #modification, are permitted provided that the following conditions are met:#Redistributions of source code must retain the above copyright notice, #this list of conditions and the following disclaimer.#Redistributions in binary form must reproduce the above copyright notice,#this list of conditions and the following disclaimer in the documentation#and/or other materials provided with the distribution.#The names of this programs contributors may not be used to endorse or #promote products derived from this software without specific prior #written permission. #THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS#AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT #LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR #A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR #CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, #EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, #PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; #OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,#WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR #OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF #ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #-#Instructions for use:#You must have LWP installed to fetch the jobs. If you wish to use the#e-mail notification you also must have sendmail installed.#The script has the following command line flags:#-v : Print the version#-t : Max threshold to include the salary in statistics calculations#-b (number) : Boundary of salary after which program will shoot off an # e-mail#-m (email address) : Tell the program to notify you with email. The arguement# is a valid e-mail address. #-q : Quiet mode, dont print statistics, automatically used in email mode.#Example use:#fetch.pl -b 7.50 -m #This tells the program to fetch the jobs list and only send e-mail #notification if there are any jobs with higher pay than $7.50.#-use LWP:Simple;use Getopt:Std;$version = Job Grabber 0.01;getopts(vqt:m:b:) | die Check your command line args! ;if ($opt_t != 0) $max = $opt_t;else $max = 20; # Max threshold to include salary in count$min = 0; # Min threshold to include salary in count$highest = 0; # Highest salary$total = 0; # Total jobs counted$count = 0; # Total jobs which fall inside min/max thresholds$oncampus = /pment/oncampu.htm;#$offcampus = /pment/offcampu.htm;$URL = $oncampus;if ($opt_v) print $version ; exit(0);if ($opt_m & !$opt_q) $opt_q = true;&fetch_page;&stats;if ($opt_m & ($highest $opt_b) &email;elsif (!$opt_b & $opt_m) $opt_q = 1;sub fetch_page unless (defined ($page = get($URL) die There was an error getting URL: $URL ; page = split(/ /, $page); foreach $line (page) $line = s/*/g; # strip HTML codesif (!$opt_q & $line = /On campus job postings as of:/) print $line ;elsif ($line = /SALARY:/) push pay, (split (/:/, $line)1; sub stats foreach $elm (pay) $total+;next if ($elm = $max); if ($elm $highest) $highest = $elm;$count+; $accum += $elm; if ($count = 0) die Eiiiiiiiiiieeeeeeeeeeeeeeeeeeee divide by zero :( ; else $avg = $accum / $count; if (!$opt_q) print Total jobs listed: $total ;print Number of jobs counted for pay: $count ;print Highest hourly pay: $highest ;printf Average hourly pay: $%.2f , $avg; sub email open(SENDMAIL, |/usr/lib/sendmail -oi -t -odq)or die Cant fork for sendmail: $! ;print SENDMAIL EOF;From: Job Grabber To: $opt_m Subject: JobbyTotal jobs listed: $totalNumber of jobs counted for pay: $countHighest hourly pay: $highest Average hourly pay: $avg EOF close(SENDMAIL) or warn sendmail didnt close nicely;从上面的代码中你可以看到,大部分的代码都是“过程”,使用与C类似的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论