LINUX下編程入門.doc_第1頁
LINUX下編程入門.doc_第2頁
LINUX下編程入門.doc_第3頁
LINUX下編程入門.doc_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Linux下編程入門by Luster一、介紹 使用了Linux一段時間后,很多朋友都希望能為這個開放轅馬世界做自己的貢獻(xiàn),更多的參加到這個open source的社團里。面對無數(shù)的自由軟件,對于一個稍微不太普通的用戶來說去解開一個tar文件,然后修改makefile去編譯轅馬都是很常有的。我們不滿足簡單的編譯和使用別人的程序,我們應(yīng)該親自參加到這個開發(fā)轅馬的創(chuàng)作之中。對于一個初學(xué)者來說,面對五花八門的開發(fā)工具,如何選擇呢?使用什么開發(fā)工具去開發(fā)Linux程序呢?我們這里做個簡單的介紹。這里是你成為Linux hacker征途上的第一步。二、編程模式 讓我們開始第一步。作為一個初學(xué)者應(yīng)該首先使用什么樣的編程風(fēng)格或者說編程模式呢?有很多的選擇,例如基于函數(shù)的、基于過程的開發(fā),還有面向?qū)ο蟮拈_發(fā)等等。要成為一個好的programmer,對于初學(xué)者,最好使用某種語言對各種編程模式都嘗試一遍。Comp.lang.functional討論組里面的FAQ中定義了面向函數(shù)的語言,說“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平臺下面,比較常見的面向函數(shù)的開發(fā)語言有:ML、Haskell、Scheme等。面向過程的語言是一種把程序要完成的動作分割成一個一個“過程(procedures)”的語言。一個典型的面向過程的開發(fā)語言的組織結(jié)構(gòu),我們可以看看流程圖,就可以感覺出來。最常見的面向過程的開發(fā)語言就是Pascal和C語言了。面向?qū)ο蟮拈_發(fā)語言的核心就是用對象來表征所要執(zhí)行的主體。例如要開發(fā)一個高速公路的模擬系統(tǒng),他首先定義一個交通工具的類,包括所有交通工具的公共屬性;然后繼承這個類,可以派生出汽車類、自行車類等等。Linux平臺下最常見的面向?qū)ο蟮恼Z言是C+、Java、Python、Smalltalk和Eiffel等。還有混合的語言,你可以用多種編程模式去寫自己代碼,例如PHP和Perl。如何選擇?一般來說最好每種模式都有一個了解。最好這樣開始你的編程旅程,首先給自己定一個小project。有了一個清晰的目標(biāo)后,選擇編程語言和編程模式就容易了。如果使用某種語言開發(fā)起來容易,那么你就先學(xué)習(xí)使用這種語言。例如,我開始想學(xué)習(xí)更多的關(guān)于數(shù)據(jù)庫和web編程的時候,我決定建一個書籍?dāng)?shù)據(jù)庫,包括我擁有的書的信息還有我要計劃購買的書籍信息。經(jīng)過我的查找比較,我認(rèn)為我的想法可以用PHP和MySQL來實現(xiàn)更方便。然后我就學(xué)習(xí)了PHP和MySQL的一些知識,完成了這個小的系統(tǒng)。我個人的編程體會,我至少使用了4種語言,包括:C、PHP、SQL和Perl。C語言是最靈活和方便的開發(fā)語言,在Linux下使用最多的開發(fā)語言就是它了。一旦學(xué)會了C語言,我們就可以非常容易的學(xué)習(xí)和使用其他的語言了。所以我建議你學(xué)習(xí)C語言編程。C語言是一種高級語言,它編寫內(nèi)核級的代碼和驅(qū)動程序都非常方便。Linux下面有很多開發(fā)C語言的函數(shù)庫和開發(fā)工具,我們都可以方便的使用它們,這也是使用C語言開發(fā)代碼的好處。PHP是Hyper-text Processor的縮寫,是一種解釋執(zhí)行的語言,一般來說運行在web服務(wù)器端。如果你會C語言,那么最多花一天的時間就可以學(xué)會PHP。PHP給你在web編程方面很大的方便。SQL是Standard Query Language的縮寫,就是標(biāo)準(zhǔn)的訪問數(shù)據(jù)的查詢語言。很多PHP程序中都包含了使用SQL語言去訪問數(shù)據(jù)庫的代碼。SQL基本上使用有點類似英文的語法,所以學(xué)起來非常容易。如果你學(xué)習(xí)PHP和C,那么SQL可以簡單的順便學(xué)習(xí)。Perl是一種使用比較廣的教本語言。很多語法來自C和UNIX的SHELL工具。Perl擁有很多的可以添加的模塊,在CPAN計劃中。使用這些模塊,開發(fā)程序編得非常容易了。 下面是一個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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論