999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

軟件編程技術水平的標志性關鍵點分析與應用

2017-12-07 02:03:46劉振興
軟件 2017年11期

劉振興

(亮月亮科技(北京)有限公司,北京 101100)

軟件編程技術水平的標志性關鍵點分析與應用

劉振興

(亮月亮科技(北京)有限公司,北京 101100)

軟件編程技術水平的考評與分級是困難的, 同時也是必要的。本文在相關文獻檢索和經驗總結的基礎上提出了軟件編程技術水平的三個具有標志性的關鍵點并逐一對其進行簡述和應用分析. 這三個分水嶺一樣的關鍵點是正則表達式、軟件開發框架的掌握與運用和現實世界問題數學模型創建技能的掌握與運用。與之對應地我們稱呼具備相應技能水平的人員為工程師、高級工程師和技術專家。

軟件編程;技術水平;正則表達式;軟件開發框架;數學建模

0 引言

計算機專業及軟件產業屬知識密集型領域,其中最重要的資源是人力資源,軟件開發人才的培養與甄選日益重要。同時,傳統軟件行業的快速發展疊加移動互聯網、互聯網+、人工智能戰略布局穩步推進,催生了大量的軟件開發從業人員。對軟件編程水平及能力的評估是一件復雜而又嚴肅的事情(-R/02SI,[1-2]),出于對自身或者同行技術能力的評估需求[3],也需要在某些方面從某種程度上,對編程水平及能力有些大概粗略的感性認識。關于軟件工程美國 IBM 公司的軟件技術專家布魯克斯(Frederick Brooks)在其論文中提到軟件編程受目標任務的復雜度、一致性、可變性和不可見性的約束,在各種約束條件下取得均衡和達成目標就是對軟件編程技術及水平的考察與驗證[4-5]。

IT行業技術巨頭往往會開展一些編程技術水平認證,如微軟公司的MSDN,思科公司的CCIE等;一些行業學會、協會也會推出一些編程技術水平認證,如美國 IEEE下計算機協會的各種認證和中國計算機學會的“CCF計算機職業資格認證”[6]。這些認證往往是基于某些廠商自家產品或者囿于特定領域的認證。是否有通用的可供參考的軟件編程水平的參考標準?帶著這個疑問,我們進行一些文獻檢索,同時結合我們多年學習、工作中編程實踐、思考與經驗總結,在本文如下部分提供如下三點作為軟件編程技術水平的參考。

中國近代學者王國維將做學問的狀況劃分為三個境界,分別是“望盡天涯路”、“為伊消得人憔悴”和“那人卻在燈火闌珊處”。寫程序研發軟件也有如下三個具有標志性的關鍵點,我們稱之為軟件編程的三個分水嶺一樣的標志性關鍵點,他們分別是正則表達式的運用、軟件開發框架的掌握與運用和現實問題數學建模的掌握與運用。

余下的章節中,第二節我們討論了正則表達式及模式識別相關的理論及技術應用,第三節討論了軟件開發框架在軟件研發及其生命周期中的地位及作用,第四節討論了針對現實世界問題進行數學模型創建的相關應用,然后是針對全文的總結和展望。

1 正則表達式

正則表達式(Regular Expression)使用單個字符串來描述、匹配一系列符合某個句法規則的字符串,可以視之為狹義上的模式識別(Pattern Recognition),也可以將其視作在某種編程語言下的子類語言——用來描述其他語言的“語法”。使用它有一定的難度,句法全由符號表達,看起來抽象,可讀性差,不容易理解。比如:

/^([0-9]{1,6})$/g

表示任意1位到6位的數字,也即0~999999 ,在匹配結果集中,將反向引用被匹配到的數字串,

/^(d{1,6})$/

表示與前文相關的語法。下圖(圖 1)展示一個正則表達式工作機制的應用程序[6],將前述正則表達式輸入到“Regular Expression”相關區域,在“Test String”里輸入相應待檢測、匹配的文字,則下面“Match Information”區域會顯示匹配過程及結果。

圖1 正則表達式匹配樣例Fig.1 Example of regular expression

正則表達式被廣泛的應用于很多軟件中,包括*nix(Linux, Unix等)、HP等操作系統,PHP、C#、Java 等開發環境,以及很多的應用軟件中,都可以看到正則表達式的影子。如對外部輸入的校驗、提取,對目標對象的格式化等。

每種編程語言在進階開發和使用時都有不少需要特別關注的地方,如指針、內存、鏈表和樹、正則匹配等,若在這些不同的語言之間尋找共性的進階開發所需掌握的技能,則正則表達式是其中關鍵點之一。

掌握了某種編程語言的基本數據結構和流程控制之后,一名軟件工程師(或稱程序員)若能夠運用某種編程語言進行讀寫文件、數據庫和通過網絡收發數據,則其就是一名合格的軟件工程師。具備這樣素質的人可以勝任一般的軟件開發任務,能夠面向任務較好地完成給定的軟件開發需求,實現相應的功能。

由于計算機科學興起之處,其主要應用是對數據和文本的處理,所以正則表達式成為進階開發的必由之路也在情理之中。初階的開發人員往往止步于使用字符串查找、分割等方式來部分地完成相應功能。

正則表達式本身就是一門學問,已經有很多書籍專門就此展開詳述,其中有本《精通正則表達式》(Mastering Regular Expressions)的書[8],在豆瓣網有一個廣為贊許的評價為面向“愿意從一個代碼工人向專家進化的”(-R/A2SI )。

相比較而言,掌握和熟練使用正則表達式工具的軟件編程人員能夠高效而準確地實現相應的功能,我們稱之為第一個分水嶺。

2 軟件開發框架

軟件開發框架(Software Development Framework)軟件開發框架(Framework)是代碼組織和軟件邏輯實現的思考方式。這種思考更多的是“管理”的視角,而非計算科學技術的視角。這種管理的方式是建立在對軟件編程技術較深入、全面理解的基礎上的。一般意義上的軟件框架,是指為解決一個開放性的計算問題而設計的具有一定約束性的軟件支撐結構。在此結構上可以根據具體問題擴展、安插更多的組成部分,從而更迅速和方便地構建完整的解決問題的IT技術方案[9-12]。軟件框架本質上是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法。簡而言之,是構建結構及實例交互方法的結合體。

一名軟件編程人員在掌握了某一種編程語言之后,隨著所解決的單個、多個任務的積累,終將會面臨一個復雜任務——任務復雜到不能通過一個或幾個小程序能夠實現和滿足其功能,這時候就需要從整體上思考,需要多少個程序(模塊),這些程序和模塊之間如何交互軟件框架就是要回答這些問題。

2.1 軟件開發框架的特征

軟件框架是成功軟件項目的一般化實現。進入視野或者進行開源的多數軟件框架都經歷過一個或者多個成功項目的檢驗,是成功經驗的積累。軟件編程者當完成一個項目后,如果發現項目本身有可以進行一般化處理的代碼段或功能模塊,會對其進行封裝以便后續使用,軟件的組成架構設計也是這樣,當發現所用的設計具有一般性后,就可以在隨后的項目中繼續使用,繼而形成“框架”??蚣懿灰欢ǘ奸_源,一些私有的或者基于開源定制的框架可能在某些方面具有更好的表現。

軟件框架普遍實現了關注點分離設計(Separation of Concerns)和代碼復用(Code Resue)。分離關注點使得解決特定領域問題的代碼從業務邏輯中獨立出來,業務邏輯的代碼中不再含有針對特定領域問題代碼的調用,業務邏輯同特定領域問題的關系通過側面來封裝、維護,這樣原本分散在整個應用程序中的變動就可以很好的管理起來,如常見的MVC分層設計(模塊Module、視圖View和控制器Controller)。

代碼復用本質上就是對曾經編寫過的程序代碼的一部分甚至全部重新加以利用,從而構建新的程序。使用這種方法就可以將程序員從費時費力的重復勞動中解放出來??蚣埽悗欤┦且环N代碼復用的很好的形式。編程人員可以創建內部抽象以便程序的部分代碼可被復用,或者直接創建一個自定義庫給自己使用。一個規劃和設計良好的框架應該是實現了上述兩點。

圖2 架構設計中的關注點分離Fig.2 Separation of concerns in framework design

清晰的關注點分離和高效的代碼復用是避免軟件項目陷入泥潭(the ball of mud)的基礎和前提,也是軟件項目成功的保證。

2.2 跨語言的軟件開發框架

各種編程語言分別有許多不同的軟件框架。例如,C++編程語言的框架(類庫)有.Net、STL、Boost、Qt、MFC等;Java編程語言的框架有Structs、JSF、Spring MVC、Wicket、Stripes、Seam、GWA2 等;PHP編程語言的框架有Zend Framework、Yii、Code Igniter、Lavarel、Symfony2、GWA2 等;JavaScript編程語言的開發框架有Angular.js、Backbone.js、D3、jQuery.js、React.js等。

一個軟件開發框架一般都與所使用的某種編程語言高度綁定。這一方面是框架需要高度復合利用了編程語言的特性,使之能夠在該框架下將其性能發揮至極致;另一方面是框架的開發者和使用者需要具備指定開發語言的軟件編程的基本知識。在此之外,也有為數不多的跨編程語言的軟件開發框架,比如上文提到的“通用網絡應用架構(GWA2)[13]”——提出一種軟件架構思路,然后分別使用 Java、PHP、Perl、C#等語言進行實現,從而有了針對各個編程語言的軟件開發框架的版本。軟件開發人員在其中一門編程語言下使用GWA2之后,可以無縫平滑地切換到另外一種開發語言繼續使用對應版本的GWA2進行開發,重新學習成本降低為幾乎為零。

通常軟件編程對軟件框架的應用可以分為兩類:學習和使用一種軟件框架,或者自行開發一套軟件框架。學習有學習的成本[14],開發也有相應的開發風險。顯然,前者會更多一些,許多軟件編寫都是遵循某種軟件框架而進行的。對軟件框架和類庫應該持有某種謹慎的態度,我們在早前針對JavaScript編程的框架做過一些分析(《自行創建類jQuery 的 JavaScript庫》, -R/02SH,[15]),在學習成本、需求匹配度和框架性能三個方面需要做一些權衡。

相比較而言,我們推薦使用具有跨語言特性的軟件開發框架,由于軟件技術自身發展和開發人員自身成長是日新月異的,所處的時空變換要求每一名開發人員要掌握兩種以上軟件開發語言,相應地,如果其所依賴和學習的軟件開發框架沒有跨語言特性,則軟件開發人員就需要付出兩倍的學習成本;相反地,如果開發人員使用的是具有跨語言特性的開發框架,如上所述的 GWA2,則可以平滑無縫地切換到新編程語言中去,無需再從零開始學習另外一種軟件開發框架。

圖3 GW A2多層架構設計(DBA)Fig.3 Multiple layers in GWA2 (DBA)

像武學的拳術一樣,一招一式組成一套拳法,也像文學的八股一樣,起承轉合組成一篇文字,軟件編程中的這套拳法就是“框架”。軟件框架沒有好壞,或者都是“好的”,使用者所需工作是尋找“合適的”,因時因地使用能夠滿足業務需求的框架就是合適的,是好的,既要避免不足(Underqualified),也要考慮不會多余(Overqualified)。

我們將軟件編程的第二個分水嶺視為使用軟件框架進行開發。無論是學習一個現有的軟件框架或者開發一個全新的框架,都需要完整的軟件框架知識。開發一個全新的框架需要知識、勇氣和精力,而學習一個現有的框架其應用水平該如何來衡量呢?是否對原軟件框架的源代碼遞交過Bug或做過修改、打過補丁,這是在讀懂源代碼的基礎上對軟件框架有進一步提升的動議。

3 現實問題數學建模

學習計算科學與技術,在掌握了基本的學科知識之后,應用層面所面臨的專業細化就是使用計算機進行文本分析與處理,進行圖像的分析與處理,對音頻的分析與處理。對文本、圖像和音頻的計算是三個主要方向,后續可能還有機器學習或者人工智能,這些是使用計算機技術解決現實客觀世界的主要方法和途徑。本質上看,作為人工智能的代表方法之一機器學習就是計算機利用輸入的樣本,調整一個通用數學模型的參數,使得這個模型能正確地回應新的輸入[16]。

在掌握了某一種編程需要的單個程序應用,熟悉了由多個程序組成的軟件項目的組織結構和運行流程,接下來就是使用這些知識和技能解決現實世界的問題。對現實世界的問題進行數學建模是主要方法之一,這樣才能對問題進行計算。

具有一定的數學思維是進行數學建模的前提。觀察客觀世界的現象,抓住其主要特征,抽象出概念或者建立模型;進行探索,通過直覺判斷或者歸納推理、類比推理以及聯想等作出猜測;然后進行深入分析和邏輯推理以及計算,揭示事物的內在規律,從而使紛繁復雜的現象變得井然有序。這其中進行分析、推理和計算的過程,就需要借助計算機進行軟件編程。

計算機領域的實際問題數學建模(Mathematical Modeling)需要根據現實問題設計相應的算法(計算過程),求解描述實際問題的數學公式、函數等,進而通過這些數學公式、函數解釋、驗證實際問題,對當下進行計算,對未來進行分析、預測等[17]。這類知識、規律的發現越來廣泛應用到各種個性化、智能化服務當中。

圖4 數學建模的邏輯表述Fig.4 Mathematical modeling in logic representation

基于全樣本的大數據集,運用測試分析方法開展的機器學習、人工智能等越來越多的被應用到各種軟件編程應用場景。利用機器使用測試分析方法逐漸取代人工的機理分析,成為發現知識和規律的主要途徑之一。

問題建模是將現實問題簡化,使其變成“可計算”,然后使用編程將可計算的部分以軟件功能的形式表現出來。編程是建模實現的一種重要工具和手段,針對問題進行數據建模后的擬合、仿真和計算過程才是軟件編程大展身手的地方。在數學建模的實踐中,幾乎沒有哪個模型是不需要用到如MatLab、SPSS、Lingo、C/C++或Python這樣的編程工具的。這些將我們用數學語言描述的問題再通過計算機來實現,編制良好的程序確實能極大地幫助我們模型的實現,甚至取得更好的效用。

網絡發展的如此迅速,一些IT公司會面臨各種實際問題需要進行數學建模,而這些互聯網公司往往沒有數學專家,只有計算科學與技術專家,這就需要此前從事軟件編程工作的人員對實際問題進行數學建模,并使用軟件編程來實現它。IT公司面臨的問題既有其本身發展的需要產生的,也由全社會發展面臨的難題。機器翻譯是這樣的,人臉識別、人工智能都是這樣的。逐漸多的,面向各種問題的“算法”工程師、技術專家的需求量增加,正是這一趨勢的發展現象。

能不能對現實世界的實際問題進行數學建模,成為我們稱之為第三個分水嶺的關鍵點。

4 結論與展望

本文簡要分析了軟件編程技術水平的三個具有標志性的關鍵點——正則表達式、軟件開發框架和數學建模。這些分水嶺似的關鍵點有助于軟件開發人員甄選,也對軟件開發人員自身水平認識起到一定的參考作用。同時,這些知識點也能夠從另外一些方面引導軟件編程、開發人員盡快、盡早的掌握這些知識和技能,提升自身知識水平。

對軟件編程的技能對計算科學與技術的水平進行分層分級是困難的,我們就此列出的三個具有標志性意義的考察點在某些場合并不適用。然而,在一般意義上來說,能夠熟練掌握正則表達式、能夠掌握并對已有軟件框架進行修正或者開發一種軟件框架我們將之視為高級計算技術人員;能夠對現實世界需求問題進行數學建模,并將其映射為軟件應用,我們稱之為技術專家。

計算機及軟件行業在不斷發展變化中。一些編程語言或者編程工具會隨著整體發展或日益完善或日漸凋零,只有那些隱藏在編程技能背后的原理與思想保持不變,并隨著技術的進步以另外一種編程語言或表現形式再次出現在軟件研發行業。

因此,對軟件編程技術水平的考評既不能以某一個廠商的某種產品為基準,也不能以一時的技術平臺或編程工具為依托,從技術或技能背后的編程原理、編程思想來設計相應的考評體系更能夠全面整體地反映出從業人員的真實水平,也許未來可能有其他等同于正則表達式等這三點的參考標志出現。

[1] 中國計算機技術職業資格網, “計算機技術與軟件專業技術資格(水平)考試簡介,”10 2015. [聯機]. Available:http://www.ruankao.org.cn/focusExam/ksjs/detail/news-0000 5/. [訪問日期: 09 2017].

[2] 李二霞, 軟件編程高端人才效標群體研究, 西南大學, 2010.

[3] 馮向科,鄧瑩,彭勇, “高職軟件技術專業學生的面向對象分析、設計和編程能力培養的研究,” 科教導刊, 卷 28,pp. 41-42, 2011.

[4] 布魯克斯(FrederickP.Brooks.Jr.), “沒有銀彈-軟件工程中的根本和次要問題,”出處人月神話, 北京, 清華大學出版社, 2002.

[5] 李娜, “淺談軟件工程技術發展,”軟件, pp. 204-205, 03 2014.

[6] 中國計算機學會, “CCF計算機職業資格認證簡介,” 02 2014. [聯機]. Available: http://cspro.org/lead/info.do?__action=info_view&catalog=notice&id=hrvnsypp-1gg&__for ward=true. [訪問日期: 09 2017].

[7] F. Dib, “Regular Expression 101,” 08 2012. [聯機]. Available:https://regex101.com/. [訪問日期: 09 2017].

[8] J. E·F·Friedl, 精通正則表達式(Mastering regular expressions),第三版, 北京: 電子工業出版社, 2007.

[9] D. Riehle 和 T. Gross, “Role Model Based Framework Design and Integration,” 出處 Proceedings of the 1998 Conference on OOP Systems, Languages and Applications, ACM Press, 1998.

[10] 袁立國, 陳中育, 李方 和 郭婷, “一種軟件開發框架的設計優化,” 計算機系統應用, 卷 22, 編號 5, pp. 70-74, 2013.

[11] O. Vogel, I. Arnold, A. Chughtai 和 T. Kehrer, Software Architecture: A Comprehensive Framework and Guide for Practitioners, Heidelberg, Germany: Springer Science &Business Media, 2011.

[12] 張合 和 劉小紅, “面向對象的對象建模技術及其應用研究,” 軟件, pp. 66-68+72, 03 2011.

[13] 劉振興, “GWA2,” UFQI.COM, 11 2011. [聯機]. Available:https://ufqi.com/dev/gwa2/?_via=-naturedns. [訪問日期: 09 2017].

[14] 金旭亮, “如何學習復雜的軟件技術開發框架?,” 07 2017.[聯機]. Available: https://weibo.com/ttarticle/p/show?id=2309404135192531986821#_0. [訪問日期: 09 2017].

[15] 劉振興 和 張楠, “自行創建類jQuery的JavaScript庫,” 中國計算機學會通訊, 卷 06, 編號 6, 2013.

[16] 應行仁, “什么是機器學習,” 中國計算機學會通訊, pp.42-45, 04 2017.

[17] 謝金星 和 姜啟源, “清華大學公開課:數學模型-現實世界的理性視角,” 網易公開課, 04 2013. [聯機]. Available:http://open.163.com/movie/2013/4/9/6/M98EVI91I_M98PE9 E96.html. [訪問日期: 09 2017].

An Analysis on Key Points of Software Programming Technology Level

LIU Zhen-xing(LYL Sci&Tech (Beijing) Ltd., Beijing 101100, China)

It is not only difficult but also necessary for software programming technology level of assessment and classification in software industry and Internet+ sectors. Based on the related literature search and directional experience, this paper puts forward three key points of software programming technology level and analyzes them briefly on their applications one by one. The watershed-like three points are regular expression, the mastery and application of the software development framework and the mastery and application of the creation of skills in the mathematical model of the real world. Correspondingly, we call them with the appropriate level of skills as the engineers, senior engineers and technical experts.

Software programming; Technology level; Regular expression; Software framework; Mathematical modelling

TP311.5

A

10.3969/j.issn.1003-6970.2017.11.036

本文著錄格式:劉振興. 軟件編程技術水平的標志性關鍵點分析與應用[J]. 軟件,2017,38(11):191-195

劉振興(1977-),男,碩士研究生,原人民網研究院網絡技術研究員,中國計算機學會會員(14229M),主要研究領域:計算機網絡通信協議、互聯網后臺支撐技術和網絡架構與安全等。

主站蜘蛛池模板: 亚洲第一在线播放| 国产欧美日韩综合一区在线播放| 国产手机在线小视频免费观看| 国产成人午夜福利免费无码r| 视频二区中文无码| 精品国产三级在线观看| 亚洲娇小与黑人巨大交| 人妻中文字幕无码久久一区| 亚洲熟妇AV日韩熟妇在线| 国产又粗又猛又爽视频| 国产免费久久精品99re丫丫一| 暴力调教一区二区三区| jijzzizz老师出水喷水喷出| 天天躁夜夜躁狠狠躁图片| 亚洲天堂精品视频| 欧美精品v| 五月婷婷丁香综合| 东京热av无码电影一区二区| 色婷婷在线播放| 亚洲美女久久| 99国产精品国产| 又污又黄又无遮挡网站| 国产人妖视频一区在线观看| 午夜免费小视频| 福利一区在线| 久久99国产综合精品女同| 亚洲人成人伊人成综合网无码| 美美女高清毛片视频免费观看| 无码AV高清毛片中国一级毛片| 91网红精品在线观看| 美女国内精品自产拍在线播放| 漂亮人妻被中出中文字幕久久| 精品视频第一页| 国产91九色在线播放| 久久久久久尹人网香蕉 | 亚洲性色永久网址| 亚洲热线99精品视频| 九色视频最新网址| 日本日韩欧美| hezyo加勒比一区二区三区| 国产日本视频91| 国产成人亚洲精品蜜芽影院| 国产精品无码AV中文| 色亚洲成人| 日韩美毛片| 亚洲第一页在线观看| 亚洲日韩高清在线亚洲专区| 97视频在线观看免费视频| 国产精品男人的天堂| 免费一级毛片| 日韩精品专区免费无码aⅴ| 国产女同自拍视频| 国产香蕉在线视频| 欧美午夜在线观看| 久久黄色影院| 国产成a人片在线播放| 国产嫩草在线观看| 亚洲欧美日本国产综合在线| 中文字幕一区二区视频| 亚洲人成影院在线观看| 国产精品一区二区久久精品无码| 日本三级精品| 日本一区中文字幕最新在线| 欧洲高清无码在线| 欧美第九页| 日韩精品毛片| 色吊丝av中文字幕| 欧美精品亚洲日韩a| 国产微拍一区二区三区四区| 4虎影视国产在线观看精品| 91精品国产情侣高潮露脸| aa级毛片毛片免费观看久| 激情無極限的亚洲一区免费| 蜜臀AV在线播放| 国产黑丝视频在线观看| 日韩精品一区二区三区免费| 国产福利一区二区在线观看| 自慰网址在线观看| 免费国产一级 片内射老| 亚洲婷婷在线视频| 永久免费av网站可以直接看的 | 91在线激情在线观看|