作者csfgsj (仙人異路)
看板Soft_Job
標題[情報] 有關第四代語言分析的好文
時間Fri Jan 15 10:17:03 2016
第四代語言
雖然本人是不太用,號稱XX及XX蟲的都能用的程式語言
主要的工作領域也不在這邊
不過版上好像有不少第四代語言的用戶,希望還是要對它們有清楚的認識才好
以下是原文
摘要:
第四代語言(Fourth-Generation Language, 以下簡稱4GL)的出現是出於商業需要。
4GL這個詞最早是在80年代初期出現在軟體廠商的廣告和產品介紹中的。
因此,這些廠商的4GL產品不論從形式上看還是從功能上看,差別都很大。
但是人們很快發現這一類語言由於具有“面向問題”、“非過程化程度高”等特點,
可以成數量級地提高軟體生產率,縮短軟體發展週期,因此贏得了很多用戶。
1985年,美國召開了全國性的4GL研討會,
也正是在這前後,許多著名的電腦科學家對4GL展開了全面研究,
從而使 4GL進入了電腦科學的研究範疇。
其原意是非過程化程式設計語言,是針對以處理過程為中心的第三代語言提出的,
希望通過某些標準處理過程的自動生成,使用戶只說明要做什麼,
而把具體的執行步驟的安排交軟體自動處理。
以下全文及出處
http://baike.baidu.com/view/495763.htm
(簡體字,我也沒辦法,查到的繁體字文章都是胡X八x)
--
1F:推 LaPass: 我還在想說怎麼有面向問題至個辭,原來來源是簡體 01/15 10:27
2F:→ LaPass: 看完了,這篇也沒太大的意義。 01/15 10:38
3F:→ csfgsj: 修行看個人~~ 01/15 11:26
4F:→ y3k: 這種叫做應用 不是程式了吧 01/15 11:42
5F:→ y3k: 未來至少百年內一定還是以物件導向為主 這是人類邏輯的終點 01/15 11:43
6F:→ csfgsj: XD~~ y 大真是太好笑了,不過我正在吃飯,沒空 01/15 12:13
7F:推 Clangpp: 所以又要有戰文了嗎?? (爆米花) 01/15 12:38
8F:推 shortoneal: 抖麵大師準備出擊 01/15 12:48
該文是一篇非常高明,縱貫程式語言古今的好文章,精確的點到所有的現象
「面向問題」剛好是一個很重要的關鍵,它相對於「面向過程」
如果還是不懂,我的註解是:
「面向問題」就是「面向需求」,相對於「面向過程」就是「面向機械」
它們是前三代程式語言與第四代程式語言的分界點
第一代語言:機械語言
第二代語言:組合語言
第三代語言:高階語言,如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的胡說八道實在是太多了
在我的眼中的所謂的「物件導向」,其實只是個廣告術語
(讓你感覺它是一個很容易的東西,跟玩樂高一樣簡單,騙你進來玩)
實際探究其內容,真正符合其性質的命名應該為「框架導向」
跟物件一點關係都沒有
9F:推 Killercat: ....與其在這邊鑽研句讀,寫點東西出來玩玩如何 =_= 01/15 16:17
我拿人薪水每天寫 Code、Debug,還能怎樣
我倒覺得這些都是枝微末節,反射動作,花不了什麼腦筋
反而覺得如何處理事情、看事情的哲學才是重點
這些才是我處理問題能力的根源
如果你有偉大的計畫,或許我可以給些看法
有發財的機會,版上大部分的人都會有興趣
你想寫什麼程式?
10F:推 bab7171: 這不就是把code模組化,然後用個字典給人查 01/15 16:44
11F:→ bab7171: 像積木一樣拼一拼 01/15 16:45
12F:→ fgh81113: 拼圖寫程式已經有拉 01/15 16:58
13F:→ fgh81113: 語意不清重說 拼圖程式已經有了 01/15 16:59
Ba 大說的沒錯,這也是廠商希望給的你的思維面向
也就是結構的面向,一塊一塊拼圖,就是一個一個的Class 物件
哈哈哈!陷阱就在這,你逃不出去了
根據以上的說明,請問這是
「面向問題」?還是「面向過程」?
「面向需求」?還是「面向機械」?
它是在描述你的需求?還是在描述程序的執行過程?
答案:都不是
一旦你的思維脫離這兩樣東西,就失去解題的方向了
以後只能靠背答案過日子
14F:推 art1: 好像戰不起來 01/15 19:23
15F:推 wesley234: 難道都已被收服? 01/15 19:41
16F:推 bab7171: 這樣變的主要就是目的帶程式。 01/15 20:36
17F:→ bab7171: 現有個需求輸入關鍵字,只要把要處理文件丟到程式裡,程 01/15 20:36
18F:→ bab7171: 式會自動帶相關function. 01/15 20:36
19F:→ lovdkkkk: 誰說只有那幾種面向啊, 人的面向是無限的 (挺 01/15 21:20
目的帶程式
You Got it ~ 這就是第四代程式語言的特徵
能讓您不去涉入實作的細節,程式碼就能快速的生出來
這時不用太高深的學問,不用太辛苦,傻瓜跟懶蟲都能快速產生程式
我常感覺用第四代程式語言的開發者,似乎都不怎麼談領域知識
後來發現,其實也不是沒有領域知識,只是四代程式語言及其框架所產生的程式
都是固定大眾化、定型化的程式,沒有實作細節,實在也沒有什麼領域知識好談
那些設計框架的人,早就將你的使用情境設定好了
框架的套用者,其實能做的改變非常有限,也無法非常精細
要做出重量級的程式自然也就不太可能了
更可怕的是,大家做出來的程式看起來都差不多
或者框架能做出來的程式,早就被別人做過了
沒辦法,框架就是這樣的東西,尤其是OO這種硬框架體系
除非自己從頭做框架,但這樣乾脆不要框架,事情會單純許多
在定型化框架的環境中,自己再去定硬框架,通常下場都不會太好
@lo 大
要不要談談第五代程式語言,它就是使用自然語言
不限格式,可用無限的面向來產生程式
我的老闆就時常用第五代程式語言來開發程式
如有程式的需要,他只要說:「把程式弄出來」(用口說的就行)
然後程式就會自動產生出來,只不過程式產生的過程還是需要人工作業
全自動化目前還不行就是了
※ 編輯: csfgsj (111.243.179.203), 01/15/2016 21:39:19