[情報] 有關第四代語言分析的好文
第四代語言
雖然本人是不太用,號稱XX及XX蟲的都能用的程式語言
主要的工作領域也不在這邊
不過版上好像有不少第四代語言的用戶,希望還是要對它們有清楚的認識才好
以下是原文
摘要:
第四代語言(Fourth-Generation Language, 以下簡稱4GL)的出現是出於商業需要。
4GL這個詞最早是在80年代初期出現在軟體廠商的廣告和產品介紹中的。
因此,這些廠商的4GL產品不論從形式上看還是從功能上看,差別都很大。
但是人們很快發現這一類語言由於具有“面向問題”、“非過程化程度高”等特點,
可以成數量級地提高軟體生產率,縮短軟體發展週期,因此贏得了很多用戶。
1985年,美國召開了全國性的4GL研討會,
也正是在這前後,許多著名的電腦科學家對4GL展開了全面研究,
從而使 4GL進入了電腦科學的研究範疇。
其原意是非過程化程式設計語言,是針對以處理過程為中心的第三代語言提出的,
希望通過某些標準處理過程的自動生成,使用戶只說明要做什麼,
而把具體的執行步驟的安排交軟體自動處理。
以下全文及出處
http://baike.baidu.com/view/495763.htm
(簡體字,我也沒辦法,查到的繁體字文章都是胡X八x)
--
推
01/15 10:27, , 1F
01/15 10:27, 1F
→
01/15 10:38, , 2F
01/15 10:38, 2F
→
01/15 11:26, , 3F
01/15 11:26, 3F
→
01/15 11:42, , 4F
01/15 11:42, 4F
→
01/15 11:43, , 5F
01/15 11:43, 5F
→
01/15 12:13, , 6F
01/15 12:13, 6F
推
01/15 12:38, , 7F
01/15 12:38, 7F
推
01/15 12:48, , 8F
01/15 12:48, 8F
該文是一篇非常高明,縱貫程式語言古今的好文章,精確的點到所有的現象
「面向問題」剛好是一個很重要的關鍵,它相對於「面向過程」
如果還是不懂,我的註解是:
「面向問題」就是「面向需求」,相對於「面向過程」就是「面向機械」
它們是前三代程式語言與第四代程式語言的分界點
第一代語言:機械語言
第二代語言:組合語言
第三代語言:高階語言,如C
以上三個都是「面向機械」,寫程式時以CPU的運作角度來考慮、實作的語言
第四代程式語言:
面向需求:寫程式時只考慮我的需求,描述我的需求,
而不用知道、不必考慮CPU如何運作運轉
語言的功能只是在於描述需求
例如:
結構、型態、性質描述語言
Regular Expression:字串型態描述
HTML:圖形版面配置描述語言
XML、*.inf:樹狀資料結構描述語言
HDL:硬體結構描述語言
組態參數、組態檔案
作業描述語言
SQL:資料庫的操作、查詢
Makefile:製程魚骨圖結構描述語言
Script
描述語言需要轉換過程,即需求轉實作的工具,
將描述語言碼轉換成處理器實作語言碼,才可被CPU執行、實作
Ex:
Android App:設計從Layout 開始,一定是先填這個資料結構:main.xml
main.xml:Layout需求描述碼:面向需求、面向問題
會被IDE轉換成 R.java :面向實作碼(雖然還不是很純正)、面向過程
至於OO,只算是眾多第四代程式語言中的一支
不反對別人用OO,優缺點自己要知道
只不過是有關OO的胡說八道實在是太多了
在我的眼中的所謂的「物件導向」,其實只是個廣告術語
(讓你感覺它是一個很容易的東西,跟玩樂高一樣簡單,騙你進來玩)
實際探究其內容,真正符合其性質的命名應該為「框架導向」
跟物件一點關係都沒有
推
01/15 16:17, , 9F
01/15 16:17, 9F
我拿人薪水每天寫 Code、Debug,還能怎樣
我倒覺得這些都是枝微末節,反射動作,花不了什麼腦筋
反而覺得如何處理事情、看事情的哲學才是重點
這些才是我處理問題能力的根源
如果你有偉大的計畫,或許我可以給些看法
有發財的機會,版上大部分的人都會有興趣
你想寫什麼程式?
推
01/15 16:44, , 10F
01/15 16:44, 10F
→
01/15 16:45, , 11F
01/15 16:45, 11F
→
01/15 16:58, , 12F
01/15 16:58, 12F
→
01/15 16:59, , 13F
01/15 16:59, 13F
Ba 大說的沒錯,這也是廠商希望給的你的思維面向
也就是結構的面向,一塊一塊拼圖,就是一個一個的Class 物件
哈哈哈!陷阱就在這,你逃不出去了
根據以上的說明,請問這是
「面向問題」?還是「面向過程」?
「面向需求」?還是「面向機械」?
它是在描述你的需求?還是在描述程序的執行過程?
答案:都不是
一旦你的思維脫離這兩樣東西,就失去解題的方向了
以後只能靠背答案過日子
推
01/15 19:23, , 14F
01/15 19:23, 14F
推
01/15 19:41, , 15F
01/15 19:41, 15F
推
01/15 20:36, , 16F
01/15 20:36, 16F
→
01/15 20:36, , 17F
01/15 20:36, 17F
→
01/15 20:36, , 18F
01/15 20:36, 18F
→
01/15 21:20, , 19F
01/15 21:20, 19F
目的帶程式
You Got it ~ 這就是第四代程式語言的特徵
能讓您不去涉入實作的細節,程式碼就能快速的生出來
這時不用太高深的學問,不用太辛苦,傻瓜跟懶蟲都能快速產生程式
我常感覺用第四代程式語言的開發者,似乎都不怎麼談領域知識
後來發現,其實也不是沒有領域知識,只是四代程式語言及其框架所產生的程式
都是固定大眾化、定型化的程式,沒有實作細節,實在也沒有什麼領域知識好談
那些設計框架的人,早就將你的使用情境設定好了
框架的套用者,其實能做的改變非常有限,也無法非常精細
要做出重量級的程式自然也就不太可能了
更可怕的是,大家做出來的程式看起來都差不多
或者框架能做出來的程式,早就被別人做過了
沒辦法,框架就是這樣的東西,尤其是OO這種硬框架體系
除非自己從頭做框架,但這樣乾脆不要框架,事情會單純許多
在定型化框架的環境中,自己再去定硬框架,通常下場都不會太好
@lo 大
要不要談談第五代程式語言,它就是使用自然語言
不限格式,可用無限的面向來產生程式
我的老闆就時常用第五代程式語言來開發程式
如有程式的需要,他只要說:「把程式弄出來」(用口說的就行)
然後程式就會自動產生出來,只不過程式產生的過程還是需要人工作業
全自動化目前還不行就是了
※ 編輯: csfgsj (111.243.179.203), 01/15/2016 21:39:19
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章