国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

也談編程改革

開發(fā) 前端
如果我告訴大家,這篇文章出自一個只有20歲的小伙,我想很多人都會感到吃驚。至少我是吃了一驚,因為這篇文章涉及到主題聽起來是很有深度的,我本人在20歲時幾乎想都不會想這些事情,更別說研究了。但又過了這么多年,不知國內(nèi)的青年們有沒有追趕上西方的步伐,也能出現(xiàn)幾個這樣看起來很有編程天分的人?

我最近看到了《編程改革 》這篇文章,里面的內(nèi)容討論到了我們的編程中存在的一個最根本的問題。我同意作者的觀點,但我感覺很多的評論并沒有理解他說的問題,所以,我打算用另外一種方式來說明一下。

我從事編程已經(jīng)很久,主要是因為我癡迷于解決難題。我非常喜歡研究編程語言,一部分原因是作為一個程序員,我本身是被它們包圍,同時也是因為語言是讓我們成為人類的一個重要因素。

我享受編程這種職業(yè),我喜歡這種能夠從無到有創(chuàng)造出神奇東西的能力,但同時也對我們每天需要處理的這些事情感到失望。下面就是原因:

面向過程 vs 面向結(jié)果的編程

鏈式(Concatenative),函數(shù)式,面向?qū)ο蟮模壿嬍?mdash;—不管你選擇何種編程模式,他們?nèi)加邢嗤膯栴}:它們要求你去描述如何做,而不是做什么。在你能叫得出名字的任何一種語言里,程序是一個對能計算出你想要的東西的處理過程的描述,而不是一個對你想要的東西的描述。誠然,一些語言會比另外一些語言更具有陳述性,但這跟“陳述式 vs 命令式”的問題并不相關(guān)——能夠陳述式的表達一個過程的語言仍然是面向過程的,而不是面向結(jié)果的。

這才是癥結(jié)所在。作為程序員,我們用代碼解決問題。我們應(yīng)該能夠用代碼來表達我們想要的結(jié)果,而不是想要達到這種結(jié)果需要的過程。

作者提出的是一種“約束滿足(constraint satisfaction)”式的編程方式。給出一系列的約束條件,你就能夠從中推導出一種能夠滿足它們的算法。當然,我們必然的會擔心編譯器推導出的這種算法的正確性和各種性能指標;是否本來可以做到Θ(n log n)級別的,它編譯器卻給出了Θ(n!)?這是一個很合理的擔心,但它只是跟你的描述是否嚴謹有關(guān)。

你也知道,對于一個特定的算法,我們可以通過很多種不同的但卻等效的約束集合來定義。從中進行優(yōu)選,我們有信心相信,編譯器能夠推導出我們想要的結(jié)果。我們的工作應(yīng)該變成把需求用有效的約束正確的表達出來,讓編譯器去滿足這些約束。

我知道這聽起來很枯燥,我最初也是這種神奇的編程方式的懷疑者。但想一想:任何值得一提的程序其實都是這樣實現(xiàn)的,只是它們是以一種效率低的容易出錯的手工方式。一個程序員拿到一些需求,先整理它們,然后辛苦的把它們轉(zhuǎn)換成一種合適的處理過程。我們可以省掉這其中的一個步驟。

一個現(xiàn)實的例子

假設(shè)你在編寫一個游戲。在你的待完成任務(wù)清單上的***個要實現(xiàn)的事情是:通過方向鍵,讓一個游戲角色可以在屏幕上四處移動。在任何一種語言里,你不得不構(gòu)造出一大堆不相干的基礎(chǔ)構(gòu)件來實現(xiàn)這個操作:

◆ 把一個連續(xù)的物理動作轉(zhuǎn)變成一系列相互分離的圖像

◆ 處理幀頻,幀渲染,幀沖突等問題

◆ 管理各種活物體和死物體的狀態(tài)和資源使用問題

所有的這些折騰實際上跟我們想要的東西是沒有關(guān)系的。

很多時候,這些工作已經(jīng)由某個程序庫提供完成了,但這表明一個事實:需要有人去做這些麻煩事。相比較,功能應(yīng)對式編程很適合做這種事情。你可以準確的表達出你的意思:

 這個游戲角色的特征包括:

◆ 某位置的加速度( ax , ay )

◆ 某位置的速度( vx , vy )

◆ 位置( x, y )

◆ 物體的大小( w, h )

當方向鍵按下時,加速度改變:

◆ 左:( ‒1, 0 )

◆ 右:( +1, 0 )

◆ 上:( 0, ‒1 )

◆ 下:( 0, +1 )

隨著時間的相互作用:

◆ 加速后的速度

◆ 運動后的位置

在( px , py )處像素點的顏色是:

◆ 如果( px , py )在物體的( x, y, x + w, y + h )范圍內(nèi):

◆ 顯示物體( px ‒ x, py ‒ y )處的顏色

否則:

◆ 顯示背景色

這是一個完備的,完全陳述式的,完全面向結(jié)果的對一個程序的描述。這些描述都是跟你目前要實現(xiàn)的目標任務(wù)是直接相關(guān)的,每個描述都是一種約束,在一個RRP(這是一個簡單的約束求解程序,根據(jù)實時狀態(tài)推導解決方案)系統(tǒng)里,你可以按意愿添加或去除這種約束。

何去何從?

Prolog語言就是一個以約束為基礎(chǔ)的編程方式的樣本,而Haskell語言里的FRP庫表現(xiàn)的更好,但這些跟我們能夠做到的比起來更像玩具。

沒有任何理由去說我們不能實現(xiàn)一種更好、更面向結(jié)果的語言,或者把目前存在的面向過程的語言變得更像面向結(jié)果,為這種編程模式賦予更大的能力。參考一下Swym這篇文章,里面提到的關(guān)鍵字etc就能讓你實現(xiàn)類似的事情:

  1. List.byPairs: [[.1st, .2nd], [.3rd, .4th], etc]; 
  2. byPairs[1..10] == [[1,2],[3,4],[5,6],[7,8],[9,10]]; 

當你提供給它一些不同的參數(shù),它能做出更智能的事情:

  1. [1,2,3].byPairs == [[1,2]]; 
  2. [1,2].byPairs == [[1,2]]; 
  3. [1].byPairs == []; 

這真是讓人興奮,但事情并非到此為止,我們可以把它做的更好。我們實現(xiàn)更多的類似etc和 each 這樣的”魔法“操作符,可以讓一種命令式的語言看起來更像面向結(jié)果的語言。

有一段時間,我使用一個叫做Prog的語言工作。你可以把它按照普通的命令式的語言進行編程。但它附帶有一些特殊的語言特征。這些神奇的語言特征是通過“radioactive types”實現(xiàn)的,它們是一種中間態(tài)的語言行為特征,只能在解釋器分析期運行,過了此階段,它們就蛻化成普通的語法。舉個例子,對一個枚舉數(shù)據(jù)結(jié)構(gòu)進行各種操作,可以這樣寫:

  1. which (1..10) > 5 == (6, 7, 8, 9, 10); 
  2. each (1..5) ** 2 == (1, 4, 9, 16, 25); 
  3. each (1..3) * each (1..3) == ((1,2,3), (2,4,6), (3,6,9)); 

在讀了那篇文章和之后的評論后,我激起了再次使用Prog語言的想法——如果有時間的話。我希望能看到更多的關(guān)于這方面的文章出現(xiàn)。目前開發(fā)的一個具有相似理念的項目消耗了我大量的精力,那是一個能讓非程序員用戶制作出專業(yè)質(zhì)量的交互式媒體的工具。如果你不知道如何編程,你在創(chuàng)建游戲或其他媒體應(yīng)用時會受到阻礙。所有的這些幫助創(chuàng)造性的軟件基本上可以歸為兩類:

◆ 功能可憐的有限

◆ 復雜的沒法用

所以,利用研究人們能如何更好的解決問題,我開發(fā)了這樣一個工具,能讓那些心里有想法、但沒能力把它變成現(xiàn)實的人解決他們的問題。目前為止,我們還有繼續(xù)努力。如果你是一個程序員,受到這篇的啟發(fā),想?yún)⑴c做一些事情,請聯(lián)系我evincarofautumn@gmail.com,我會告訴你如何參與進來。

原文:http://www.aqee.net/yep-programming-is-borked/

【編輯推薦】

  1. 編程語言新生兒到底因何成功 又為何失敗?
  2. XQuery 開發(fā):一種更好的數(shù)據(jù)庫編程語言
  3. 2012年3月編程語言排行榜:JavaScript語言的回歸
  4. 新讀圖時代:編程語言的演化過程
  5. 再談JavaScript面向?qū)ο缶幊?/a>
責任編輯:陳貽新 來源: 外刊IT評論
相關(guān)推薦

2017-05-16 15:27:32

精益敏捷代碼

2010-04-21 11:55:34

2012-03-06 10:02:44

編程

2009-05-17 10:28:20

微軟Windows 7操作系統(tǒng)

2013-10-12 10:35:53

2014-05-12 00:35:58

創(chuàng)業(yè)CEO工資

2015-07-02 10:09:23

存儲虛擬化軟件定義存儲云平臺

2024-03-18 13:43:20

Linux架構(gòu)

2011-11-17 09:20:13

LuaMark Gibbs馬克·吉布斯

2019-01-31 10:51:04

微服務(wù)DevOps開 發(fā)

2013-05-02 08:57:04

程序員創(chuàng)業(yè)

2009-09-16 17:29:38

Ruby on RaiDave Thomas

2023-11-01 11:27:10

Linux協(xié)程

2017-04-05 14:48:46

打造戰(zhàn)斗力團隊

2023-11-01 10:38:46

Linux高性能網(wǎng)絡(luò)編程

2023-11-01 10:58:31

系統(tǒng)調(diào)用高性能網(wǎng)絡(luò)編程Linux

2023-11-01 11:40:46

Linux高性能網(wǎng)絡(luò)編程工具

2017-09-05 15:42:36

語言開發(fā)Python

2015-02-09 09:51:06

2018-02-01 04:02:41

數(shù)據(jù)中心網(wǎng)絡(luò)編程
點贊
收藏

51CTO技術(shù)棧公眾號

国产成人jvid在线播放| 精品一区91| 超碰成人在线免费观看| 午夜精品福利一区二区三区av | 亚洲天堂免费看| 久久国产精品视频| 黄色片免费在线观看视频| 国产www视频在线观看| 一本久久知道综合久久| 欧美日韩午夜在线| 国产厕所精品在线观看| 日韩电影免费| 国产精品va| 欧美自拍偷拍一区| 国产日韩在线一区二区三区| 玖玖综合伊人| 欧美日韩18| 欧美色综合网站| 国产亚洲一区在线播放 | 天堂av一区二区三区在线播放 | 国产羞羞视频在线观看| 亚洲国产欧美在线观看| 91日韩精品一区| 亚洲视频综合网| 超碰97在线看| 欧美色999| 国产1区2区3区精品美女| 亚洲人成免费电影| 91国在线高清视频| 成人h在线观看| 不卡的av网站| 麻豆国产va免费精品高清在线| 男人靠女人免费视频网站 | 在线播放av网站| 欧美大人香蕉在线| 五月天久久比比资源色| 成人午夜激情免费视频| 欧美孕妇孕交xxⅹ孕妇交| 一本到12不卡视频在线dvd| 色综合久久久久久久| 痴汉一区二区三区| 嫩草香蕉在线91一二三区| 免费精品视频在线| 亚洲片在线观看| 国产成人一区二区三区电影| 亚洲色图另类色图| 欧美日本国产| 日韩欧美国产一二三区| 亚洲在线播放电影| 欧美另类老肥妇| 久久综合国产精品| 性视频1819p久久| 三级ai视频| 国产精品久久久久久麻豆一区软件| 日韩欧美黄色动漫| 亚洲xxxx视频| 粗大黑人巨茎大战欧美成人| 奇米综合一区二区三区精品视频| 国产视频久久久久久久| 男人天堂a在线| 亚洲一区二区免费在线观看| 亚洲男人电影天堂| 国产免费一区二区三区香蕉精| 男男激情在线| 国产日韩一区二区三区在线播放 | 国产免费av高清在线| 国产日韩欧美一区| 欧美精品一区二区蜜臀亚洲| 中国女人做爰视频| 国产精品视频一区二区三区综合| 国产精品免费免费| 国产精品99导航| 国产三区四区在线观看| 麻豆久久婷婷| 一区二区三区黄色| 8x8x最新地址| 精品国产成人| 日本丶国产丶欧美色综合| 奇米影视首页 狠狠色丁香婷婷久久综合 | 国产欧美日韩电影| 91免费黄视频| 欧美精品性视频| 亚洲激情在线播放| 午夜国产欧美理论在线播放| 国产盗摄在线视频网站| 成人免费视频91| 国产精品久久久久91| 欧美日本视频在线| 久久综合久久久久88| 成人爽a毛片免费啪啪红桃视频| 深夜黄色小视频| 久久五月天综合| 国产网站一区二区三区| 精品盗摄女厕tp美女嘘嘘| 岛国片av在线| 二区在线观看| 在线一级成人| 91黄视频在线观看| 在线看视频不卡| 精品一区二区三区在线观看视频 | 欧美最猛性xxxxx直播| 天天躁日日躁成人字幕aⅴ| 搞黄视频免费在线观看| 日本黄xxxxxxxxx100| 日韩在线观看视频免费| 最好看的中文字幕久久| 亚洲先锋成人| 中文字幕综合| 蜜桃精品噜噜噜成人av| 欧美日韩久久久久久| 成年在线观看视频| 精品视频久久| 精品久久久久久久久久久久包黑料 | 久久精品99久久久香蕉| 日本1区2区| 日韩高清中文字幕一区| 欧美激情亚洲视频| 黄网站免费在线观看| 久久久亚洲欧洲日产国码αv| 91香蕉电影院| 国产精品久久久久久久久免费高清 | 欧美激情网友自拍| 欧美777四色影视在线| 新狼窝色av性久久久久久| 久久九九免费视频| 1769视频在线播放免费观看| 久久久国产精华| 欧美精品一区二区视频| 米奇精品关键词| 精品99久久久久久| 人猿泰山h版在线观看| 国产剧情一区二区三区| 91免费看国产| 高清久久精品| 制服丝袜日韩国产| 97影院理论片在线播放| 麻豆精品久久精品色综合| 国产精品欧美一区二区三区奶水| 欧美××××黑人××性爽| 色噜噜狠狠成人中文综合| 超碰影院在线观看| 日韩av网站在线观看| 国产精品户外野外| 91国内外精品自在线播放| 欧美日韩欧美一区二区| 很黄很污的网站| 国产一区二区三区蝌蚪| 亚洲在线观看视频| 亚洲国产aⅴ精品一区二区| 亚洲电影天堂av| 欧洲一区av| 国产精品每日更新| 九九久久九九久久| 国产综合精品| 欧美在线性视频| 99精品在免费线偷拍| 91麻豆精品国产综合久久久久久 | 97偷自拍亚洲综合二区| 久久久极品av| 欧美色图天堂| 丰满岳妇乱一区二区三区| 国产福利一区视频| 美女视频免费一区| 97久久人人超碰caoprom欧美 | 国产精品久久毛片a| 四虎精品欧美一区二区免费| 亚洲国产一区二区精品专区| 秋霞av国产精品一区| 国产成人精选| 精品国产一区二区三区av性色| 翔田千里一区| 国产精品国产三级国产aⅴ入口| 丰满女人性猛交| 亚洲国产二区| 国产精品日韩在线一区| 日韩在线精品强乱中文字幕| 精品亚洲aⅴ在线观看| 日本在线视频站| 午夜不卡av在线| 一插菊花综合| 972aa.com艺术欧美| 亚洲人成影视在线观看| 亚洲二区免费| 国产中文字幕日韩| 欧美顶级毛片在线播放| 日韩在线视频免费观看| 草草视频在线| 欧美丰满少妇xxxxx高潮对白| 中国黄色在线视频| 日韩毛片精品高清免费| 日韩av片在线看| 国产美女视频91| 日韩精品久久一区| 一区视频在线看| 成人xxxxx| 国产精品一区二区99| 久久久综合av| 国产精品一区二区三区四区在线观看 | 干日本少妇首页| 国产精品一区二区三区乱码|