Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save fntsrlike/11474668 to your computer and use it in GitHub Desktop.
Save fntsrlike/11474668 to your computer and use it in GitHub Desktop.
寫字檯

問題前提:

法院的系統很多、很大、很細,多委由廠商開發及維護(最大的系統一年可能要上千萬),但目前趨勢是需要一些小系統,但司法院的政策是由各法院自行處理(亦即沒經費、沒人力)。我們的法院未來潛在需要的系統是「無紙化線上傳閱系統」、「線上投票系統」、「派車系統」、「線上報名系統」...等,是故,連開發環境所需之軟體也付之闕如...在如此的情況下,請教你該用何種程式語言開發?資料庫部分?主機系統部分?經瞭解,有些法院已找到人自行開發類似上述小系統,但多為ASP或ASP.NET所寫,且願意分享。ASP未來性如何?好學否(比起PHP來說)?ASP.NET是何物?我應該學個可以修改別人的軟體的語言,還是自己重新學起自己寫?

如上述,稱為「小系統」,是故排版美編不是重點,而是重在各科室的「作業流程」,以及「資料庫連結」的資料紀錄。(所以自想,是不是應不需要學程式語言如JAVA、VB等,也不需要學「使用端技術」的Jscript、VB script、JAVA Applet吧?只要學伺服端技術的ASP、ASP.NET、PHP吧?但不知要用到JSP嗎?AJAX又是何物呢?)

HTML應該是要學吧?我沒學過HTML...是故,如果從HTML、PHP、ASP開始的話,市面上淺顯易懂且非常實務的書(尤其是好作者),不知你有無推薦?

林同學你好:謝謝你很認真地準備以上的問題~另,請問:1.網站上有哪些很實用的教學網,而且適合初學者或是提供一些值得引用的程式模組(或函數)?2.市面上哪裡有無提供教學影片(如哪間大學的「開放式課程」有此類影片,或是學習網站?(也是提供影片的))

前端(F2E) & 後端(B2E)

在回答問題前,先簡述一個在網頁程式開發上分類的概念,也就是前端(Front to End)與後端(Back to End)。比較簡單的概念劃分就是前端主要負責的是輸入界面,例如使用者所看到的界面與互動等等;後端則是運算處理、資料庫調動,使用者看不到的部分。

在前端,主要使用的語言就是HTML、CSS、JavaScript。HTML是一種標記語言,它是網頁的主要內容,構成了網頁的整體結構,利用各種標簽將文本包住,並賦予屬性與語義。CSS則是一種樣式表語言,它是針對HTML的結構,去決定網頁內容的顏色、字型、排版等顯示特性。JavaScript則是程式語言,前端所有互動性的程式。幾乎都是使用JavaScript所寫。基本上所有網頁城市設計師,不管前後端,都應略懂這三種語言,尤其是HTML與CSS,它們構成了靜態網頁,也就是網頁最基本的成本。

而靜態網頁結合後端,就是動態網頁,即網頁會隨著資料庫資料或是網站權限的不同,呈現的資料也不同。後通通常只會選定一種語言做開發,當然,也不止一種語言可以用來開發後端。目前比較著名用來開發後端的程式語言有PHP、Ruby(使用Rails框架)、Python(使用DJango框架)、C#(使用ASP.NET開發平台)、JSP(基於Java),以及最近興起的node.js(基於JavaScript)等等。而PHP則是裡面之中最容易入門且使用率最廣的程式語言。

ASP 與 ASP.NET 差異何在?他們到底是什麼?

  • ASP
    • 是動態伺服器網頁,由微軟公司開發的伺服器端執行的指令碼平台。
  • ASP.NET
    • 是由微軟在.NET Framework(簡稱.NET)中所提供的「開發Web應用程式」的「類別庫」。
    • 是ASP技術的後繼者,但它的發展性要比ASP技術要強大許多。

簡單的說,先有ASP這個指令碼「平台」,然後出現.NET,而這個框架裡面有一個開發網頁應用程式的類別庫,叫做ASP.NET。所以ASP.NET並不是一個程式語言,而是一個開發的平台、類別庫。在這個平台裡,你可以使用.NET所支援的程式語言(C#、VB.NET、C++、Python等)去做程式的開發。

而這塊領域就是屬於微軟公司的系列產品,如果使用ASP.NET開發網頁程式,那系統、資料庫最好都用微軟的東西,這樣效能才會好,而且問題才會少。所以就需要購買相關的軟體授權(Ex. MSSQL資料庫、IIS網站伺服器),這都是需要預算購買的,也就是成本比較大,所以比較適合組織開發,而不是個人名義。

而通常公家機關、政府單位或是比較有年紀的企業,做網站都是使用ASP.NET。

PHP是什麼?

PHP是一門Open Source的腳本語言,主要是用來寫網頁程式的後端。

PHP的發展歷史我們在這裡不多贅述,直接談論他的現況。PHP是一個在近幾年來,新手從事動態網頁程式開發一個低門檻的入門語言(但不代表它的功能很初階,只是入門門檻低,但要寫的很好,還是需要一番工夫),也是目前使用率最廣的網頁程式語言,許多CMS(內容管理器)如wikipedia、wordpress、joomla、drupal都是用PHP寫的,甚至連許多大型網站,如Facebook也是用PHP寫的。而也有不少小型的管理系統是用PHP寫的,例如敝校圖書館的研究小間借用系統、校外人士進館系統等。這邊主要是表達PHP使用之廣,其中很大的原因就是因為它是一門open source的程式語言,不需要任何費用,且執行環境容易部署,幾乎只要學會語法即可開發。

也因為PHP使用之廣,且是一門Open Source的語言,讓他在網路上的學習資源非常豐富,讓新手得以快速上手,也是為什麼他是常用來推薦新手學習寫網頁程式語言的入門方向。

而常與PHP搭配的系統,在資料庫就是同樣為OpenSoure的MySQL,而伺服器與執行環境則推薦使用XAMPP進行開發與測試。以上程式都是不需要付費的,非常適合剛創業的公司或是個人開發去使用,能以低金錢成本去開發一個想要的網站、系統。

而在編寫上,由於PHP本身規範較鬆散,新手寫出來的程式就算會可以執行,但因其架構紊亂,會導致程式的維護成本偏高,甚至有許多安全性的漏洞。因此現在在使用PHP開發時,都至少會導入MVC的架構,最快速的方式就是使用現成的Framework(框架)去做開發,現在比較著名的Framework為Yii、CodeIgniter(已停止維護,不建議)以及Laravel,而其中使用度最高的即為Laravel,也是筆者目前主要使用的框架,也是最推薦的。

選擇一門後端網頁程式語言:PHP v.s C#(ASP.NET)

程式語言並有所謂的優劣,只有他的語言特性比較適合開發什麼方向的程式,以及您的需求、環境、預算等等考量。而其實,在程式語言的選擇上,很多都基於環境所作出選擇。比如說前人是用什麼語言開發的,後人就跟著用什麼語言開發、或是最強的技術人員(或是可以指導的人員)是用什麼語言,就一起用什麼語言、或是一個開發團體中,裡面哪個語言會的人較多,就使用該語言,或是預算吃緊,就選擇使用不需要買授權的語言與環境去做開發...等等。所以與其比較技術人員思考面的去爭論語言的特性,去思考當下的環境使用何種語言是比較務實、甚至稱為現實的做法。

而在選擇PHP或ASP.NET去做網頁程式的開發,首先就針對兩者的差異興趣做評估。PHP是一款免費可使用的OpenSource的程式語言,在網路也擁有許多學習資源和社群,也包括許多問答(雖然上面的質不一定都最好,但至少聊勝於無),在環境部署上也非常容易,也許許多Framework可使用。而使用ASP.MET去開發則是需要向微軟購買授權的環境,通常是該資訊環境原本就是使用C#或是VB等微軟相關語言去做開發,就會繼續保持下去(比如說外包廠商後,維護要自己來之類的)。比較下來選擇就很簡單了,若是要從零開始去做網頁程式的開發,PHP無疑是一個很好的選擇。但若是公司早有購買ASP.NET的相關授權,或是前面也有許多專案是用ASP.NET開發,則可考慮繼續保持下去。

不一定要開發的另一種選擇,CMS

然而開發網頁程式系統真的一定要會寫程式嗎?其實這不是必然的。現在有許多使用PHP開發的CMS(Content Manage System)如Drupal、Joomla等,就可以讓不會寫程式的使用者,一行程式都不用寫的,用現有的模組去開發他想要的功能。當然這種方式也有其優缺點,就是彈性與效能是無法和直接寫程式相比,但是不失為另一種可以考慮選擇。也有案例事先用CMS建立簡單的系統,到中後期才用程式語言根據系統流程邏輯去開發程式。

結論

根據問題的狀況,結合需求、經費與環境,會比較推薦使用Drupal這款CMS去做系統開發,若是希望比較彈性的,則推薦使用PHP做系統程式開發。若是資料庫,則推薦使用MySQL,搭配phpMyAdmin去做管理。在伺服器架設,開發方面可先使用XAMPP,裡面已經附有PHP+MySQL+Apache的環境,且已經富有phpMyAdmin協助資料庫管理,若是需要正式營運,也是可以繼續使用XAMPP,但另需做一些安全性的設置。以上大概就是針對目前狀況,所提出對於選擇部分的答案。=)

入門學習資源

綜合:

PHP:

F2E:

CMS:

Tools

Editor

Server

Version Control

@fntsrlike
Copy link
Author

過了兩年半,我現在才看到你的留言wwww

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment