㈠ 請問java開發工具有哪些
Eclipse,MyEclipse,NetBean,Intellij。
㈡ 請問 什麼樣的編程軟體才是以人為本最優秀的
◆ Visual Basic .NET 技術內幕
—— Programming Microsoft Visual Basic .NET(Core Reference)
本書內容深入全面,涵蓋的主題十分豐富,並結合大量典型的代碼示例來講解Visual Basic.NET的核心編程技術。本書共分6大部分。首先介紹了Visual Basic.NET語言的基礎知識,以及一些有關類的新特性,例如繼承、委託和事件等。然後詳細講解了Visual Basic.NET面向對象的特性,並介紹了.NET對字元串、數字、日期/時間和文件類的內在支持,以幫助您掌握這些最重要的API元素。之後,描述了新的Windows窗體、通過ADO.NET進行資料庫編程和Win32技術支持等,並講解了如何通過程序集來部署Visual Basic.NET應用程序。最後介紹了Internet應用程序的開發,包括Web窗體、ASP.NET應用程序和諸如緩存技術、配置等新特性,以及用於Web開發的基本技術。 本書在多處指出了Visual Basic.NET與Visual Basic 6之間的區別及其新特性,並介紹了在Microsoft.NET環境下導入和重用現有的V1sualBasic代碼的最佳方式。通過本書的學習,您可以全面掌握Visual Basic.NET編程技術。
◆ Microsoft Windows程序設計 - Visual Basic .NET語言描述
—— Programmin Microsoft Windows with Microsoft Visual Basic .NET
Petzold最暢銷的C#書籍——現在針對Microsoft Visual Basic.NET開發人員推出了適用本。Charles Petzold是全球最權威且知名的Windows程序設計專家,他將其最暢銷Programming Microsoft Windows with C#——書加以改寫,使之能完全適用於Visual Basic.NET的開發人員。這位暢銷書的作家示範了如何使用Visual Basic.NET將Windows Forms的功能發揮到極致(Windows Forms是新一代的Windows程序設計類庫)。您將學習如何使用Visual Basic的.NET版本替Windows應用程序建立動態的用戶界面與圖形化輸出。通過豐富的用戶端應用程序範例清楚示範了最常用的技術與不為人知的技巧,有了本書,您能真正深入到VisuaI Basic.NET的核心領域。
◆ Microsoft .NET框架程序設計
—— Applied Microsoft .NET Framework programming
本書是《微軟.NET程序員系列》叢書之一,主要介紹如何開發面向Microsoft .NET框架的各種應用程序。Microsoft .NET框架是微軟公司推出的新平台,包含通用語言運行時(CLR)和.NET框架類庫(FCL)。本書將深入解釋CLR的工作機制及其提供的各種構造,同時還將討論FCL中一些重要的類型。全書共分為 五個部分,包括:.NET框架基本原理、類型和通用語言運行時、類型設計、基本類型,以及類型管理。
本書適用於要了解、掌握.NET平台的讀者,尤其適合廣大編程愛好者、軟體工程師、系統架構師閱讀。
◆ 設計模式:可復用面向對象軟體的基礎
—— Design Patterns:Elements of Reusable Object-Oriented software
本書結合設計實例從面向對象的設計中精選出23個設計模式,總結了面向對象設計中最有價值的經驗,並且用簡潔可復用的形式表達出來。本書分類描述了一組設計良好、表達清楚的軟體設計模式,這些模式在實用環境下特別有用。本書適合大學計算機專業的學生、研究生及相關人員參考。
◆ 深入淺出設計模式
—— Head First Design Pattern
你不想重新發明車輪(或者更差的是,沒有充氣車胎的輪子),所以你從設計模式中尋求幫助——設計模式是過去人們面對同樣的軟體設計問題所得到的經驗。 有了設計模式,就可以利用其他人的實踐經驗的精華,因此省下的時間可以用在其他的事情上,如:更有挑戰性的事情、更復雜的事情以及更有趣的事情。你想要學習:
·重要的模式
·何時使用某個模式,為何使用該模式
·如何在你自己的設計中馬上採用這些模式
·何時不該使用該模式(如何避免濫用模式)
·某個模式是依據哪些面向對象設計原理而設計出來的
更重要的是,你想在學習設計模式的過程中,不感覺到昏昏欲睡。如果你曾經讀過任何一本深入淺出(Head First)系列書籍,你就會知道能夠從本書中得到的是:透過豐富的視覺效果讓你的大腦充分地運作。本書的編寫運用許多最新的研究,包括神經生物學、認知科學以及學習理論,這使得這本書能夠將這些設計模式深深地烙印在你的腦海中,不容易被遺忘。你將會更擅長於解決軟體設計中的問題,並能夠和你的團隊成員用模式的語言來更好地溝通。
◆ 設計模式解析
—— Design Pattern Explained
本書從一個新的視角描述面向對象設計,將面向中對象編程的原則與運用設計模式力量創建健壯、可靠的軟體開發環境結合起來。書中採用實用、恰當的例子,指導讀者用模式解決普通的編程問題,並且解釋現代軟體設計模式的優越性。本書適用於學習面向中對象設計和設計模式的學生、程序員以及從事軟體開發的人士。 本書要點包括: ·對象、封裝和繼承的新觀點 ·設計模式的思想、起源及其在軟體設計學科中的應用 ·模式基礎以及使用統一建模語言(UML)進行面向對象軟體開發 ·如何實現關鍵模式——Strategy(策略)、Observer(觀察者)、Bridge(橋接)、Decorator(裝飾)等等 ·共同點/變化點分析、設計模式以及它們如何幫助理解抽象類
◆ 代碼大全第二版
—— Code Complete,Second Edition
代碼大全(第二版)是著名IT暢銷書作者Steve McConnell十一年前的經典著作的全新演繹:第二版不是第一版的簡單修訂增補,而是完全進行了重寫;增加了很多與時俱進的內容。這也是一本完整的軟體構建手冊,涵蓋了軟體構建過程中的所有細節。它從軟體質量和編程思想等方面論述了軟體構建的各個問題,並詳細論述了緊跟潮流的新技術、高屋建瓴的觀點、通用的概念,還含有豐富而典型的程序示例。本書中所論述的技術不僅填補 了初級與高級編程技術之間的空白,而且也為程序員們提供了一個有關編程技巧的信息來源。本書對經驗豐富的程序員、技術帶頭人、自學的程序員及幾乎不懂太多編程技巧的學生們都是大有裨益的。可以說,無論你是什麼背景,閱讀本書都會讓你在更短的時間內、更容易地寫出更好的程序。
◆ 人月神話
—— The Mythical Man-Month:Essays on Software Engineering,Anniversary Edition
本書自第一版以來,暢銷20餘年不衰,是軟體領域絕無僅有的必讀經典。本文作者為人們管理復雜項目提供了頗具洞察力的見解,既有很多發人深省的觀點,也有大量的軟體工程實踐。本書內容來自布魯克斯在IBM公司 System/360 家族和OS/360中的項目管理經驗。在本書第一次出版20年後的今天,布魯克斯重新審視了他原先的觀點,增加了一些新的想法和建議。既方便了熟悉原有內容的人們,也方便了許多第一次閱讀它的讀者。
◆ 人件
—— Peopleware:Proctive Projects and Teams,2nd Ed
《人件》第1版於1987 年出版,專門討論了軟體開發和維護團隊的管理問題,並向人們的傳統認識提出了挑戰。作者在書中推崇人本管理思想,正確指出知識型企業的核心是人,而不是技術,呼籲給予軟體工作者充分的自由和信任。本書推出後,立即在西方引起了轟動,被譽為"幾十年來對美國軟體業影響最大的理念"。與《人月神話》一樣,《人件》現已成為軟體團隊管理的經典之作。它和《人月神話》共同被譽為軟體圖書中"兩朵最鮮艷的奇葩"。人們認為,《人月神話》關注"軟體開發"本身,《人件》則關注軟體開發中的"人",因此,在成千上萬的書架上,《人件》永遠和《人月神話》並列在一起。1999 年 2 月,《人件》第2版出版,增補了8 章新內容。這些新內容擁有更加寬廣的視角,對大中型組織中的團隊如何運作進行了深入探討。《人件》最新版的中文譯本由UMLChina組織翻譯,清華大學出版社將於2003 年5月出版。
◆ 程序員修煉之道 —— 從小工到專家
—— The Pragmatic Programmer
本書主要介紹了軟體開發的原則和方法。本書直指編程前沿,透過日益增長的現代軟體開發 規范和技術,對軟體開發的核心過程進行了審視——以滿足用戶為本,針對用戶需求來產出高效、可維護的優秀代碼。全書涵蓋內容廣博,從個人責任和職業發展,到保持代碼靈活性並使之易於改動和重用,多而不雜。本書採用了有趣的軼事、詳實的例子以及詼諧的對話等方式,描述了軟體開發方方面面的最佳實踐方案和各種缺陷。您從本書所學到的開發技巧、開發習慣以及職業態度,必將幫助您修煉成為一名真正的Pragmatic Programmer!
㈢ 大家覺得java程序員 什麼樣的筆記本配置合適
我覺得對程序員來講,不會喜歡調試之類的工作時等待,所以性能不能低,固態硬碟是必配。
寫代碼這種事,當然要一塊好屏,而且為高效率,屏的解析度要高,以顯示更多行的代碼和同時顯示多個窗口,為了眼睛輕松點,只要能允許,屏要更大尺寸的,所以15寸為先。程序員也要交流,一台機子有時多個人看,同時為了平時娛樂計,IPS屏必須,
由此推薦一款:
小米Pro 15.6英寸 i5-8250U 8G 256GSSD MX150 2G獨顯 5600元
https://item.jd.com/5029717.html#crumb-wrap
入門級游戲機,玩下大型3D游戲也可以。
金屬輕薄筆記本,1.9kg,做工很精緻,節能狀態下電池8小時以上,移動性優異。
全固態硬碟,大屏高解析度,
最新1代core i5處理器和72%色域的IPS屏
㈣ 如何使用搜索技巧來成為一名高效的程序員
成為程序員的具體步驟:
第一步:
掌握一種編程語言。學習任意一種主流的編程語言,例如C++語言。熟練掌握一種語言的語法和基本的編程技巧。
學習時間:
3個月左右
注意事項:
編程語言和編程工具是兩回事情,編程語言是指C++、Basic、Object Pascal等。程序設計語言,它們是像漢語、英語一樣的抽象的語法規則,編程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代碼編輯器、程序編譯器 在內的集成化、可視化的開發工具。C++源程序可以在Visual C++ 6.0里編寫,也可以在記事本里編寫,而同一個C++源程序可以用Visual C++ 6.0編譯、執行,也可以用C++ Builder 5.0
編譯、執行,所以: C++ 不等於 Visual C++ 6.0。
第二步:
掌握一種編程工具,學習任意一種主流的編程工具。注意編程工具要和第一階段學習的編程語言一致,例如你學習的編程語言是C++,那麼編程工具要選Visual C++ 6.0或者C++ Builder 5.0。熟練掌握這種編程工具基本用法,例如:菜單、組件、程序跟蹤調試、編寫Windows程序等。
學習時間:
3個月左右
注意事項:
這個階段側重編程工具的使用,同時進一步熟習編程語言,最後達到能熟練編寫各種基本的Windows程序。
第三步:
掌握「演算法與數據結構」這門課程,許卓群的《數據結構》,熟練掌握各種常用的演算法與數據結構。
學習時間:
4個月左右
注意事項:
這是一門不可或缺的開發課程,曾經有一本經典計算機專業書籍叫做《數據結構+演算法=程序》,這說明了數據結構和演算法的重要性。它能幫我們建立良好的程序分析與設計能力。
第四步:
實現一個模擬的小型項目,掌握項目的基本開發過程和方法。
學習時間:
4個月左右
注意事項:
自己完成一個模擬的小型項目,強烈做一個MIS(管理信息系統),參考用書推「中小型信息管理系統開發實例系列叢書」,人民郵電,它的例子詳實有效, 以它為基礎再加以擴展,就可以做出實用的MIS來。
㈤ 問一下這幾種編程語言有什麼區別
有前途的。
C + +的底層開發能力強
德爾福多媒體發展的能力強
Java網路編程,跨平台的好
a>
Web語言是比較流行的ASP.NET / JSP / PHP
ASP.NET功能強大的各種DLL組件
JSP老牌的方案,穩定
PHP新的後續程序,安全性和易用性。
㈥ 有高級程序員么
軟體工程 (Software Engineering,簡稱為SE)是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟體的學科。它涉及到程序設計語言,資料庫,軟體開發工具,系統平台,標准,設計模式等方面。
在現代社會中,軟體應用於多個方面。典型的軟體比如有電子郵件,嵌入式系統,人機界面,辦公套件,操作系統,編譯器,資料庫,游戲等。同時,各個行業幾乎都有計算機軟體的應用,比如工業,農業,銀行,航空,政府部門等。這些應用促進了經濟和社會的發展,使得人們的工作更加高效,同時提高了生活質量。
軟體工程師是對應用軟體創造軟體的人們的統稱,軟體工程師按照所處的領域不同可以分為系統分析員,軟體設計師,系統架構師,程序員,測試員等等。人們也常常用程序員來泛指各種軟體工程師。
軟體工程的主要課程:
外語、高等數學、線性代數、高等代數、電子技術基礎、離散數學、計算機引論(C語言)、數據結構、C++程序設計、匯編語言程序設計、演算法設計與分析、計算機組成原理與體系結構、資料庫系統、計算機網路、軟體工程、軟體測試技術、軟體需求與項目管理、軟體設計實例分析、CMM/ISO9000等。
軟體工程(SoftWare Engineering)的框架可概括為:目標、過程和原則。
(1)軟體工程目標:生產具有正確性、可用性以及開銷合宜的產品。正確性指軟體產品達到預期功能的程度。可用性指軟體基本結構、實現及文檔為用戶可用的程度。開銷合宜是指軟體開發、運行的整個開銷滿足用戶要求的程度。這些目標的實現不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。
(2)軟體工程過程:生產一個最終能滿足需求且達到工程目標的軟體產品所需要的步驟。軟體工程過程主要包括開發過程、運作過程、維護過程。它們覆蓋了需求、設計、實現、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟體需求規約。需求分析生成功能規約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟體系統結構,包括子系統、模塊以及相關層次的說明、每一模塊的介面定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數據結構說明及加工描述。實現活動把設計結果轉換為可執行的程序代碼。確認活動貫穿於整個開發過程,實現完成後的確認,保證最終產品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。
(3)軟體工程的原則是指圍繞工程設計、工程支持以及工程管理在軟體開發過程中必須遵循的原則。
[編輯本段]軟體工程的定義
軟體工程一直以來都缺乏一個統一的定義,很多學者、組織機構都分別給出了自己的定義:
(1)。Barry Boehm:運用現代科學技術知識來設計並構造計算機程序及為開發、運行和維護這些程序所必需的相關文件資料。
(2)。IEEE在軟體工程術語匯編中的定義:軟體工程是:1.將系統化的、嚴格約束的、可量化的方法應用於軟體的開發、運行和維護,即將工程化應用於軟體;2.在1中所述方法的研究
(3)。Fritz Bauer在NATO會議上給出的定義:建立並使用完善的工程化原則,以較經濟的手段獲得能在實際機器上有效運行的可靠軟體的一系列方法。
目前比較認可的一種定義認為:軟體工程是研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。
(4)。《計算機科學技術網路全書》中的定義:軟體工程是應用計算機科學、數學及管理科學等原理,開發軟體的工程。軟體工程借鑒傳統工程的原則、方法,以提高質量、降低成本。其中,計算機科學、數學用於構建模型與演算法,工程科學用於制定規范、設計范型(paradigm)、評估成本及確定權衡,管理科學用於計劃、資源、質量、成本等管理。
[編輯本段]軟體工程學的內容
軟體工程學的主要內容是軟體開發技術和軟體工程管理.主要內容有:軟體的開發方法、軟體生存周期及其模型概述、軟體的可行性分析與需求分析以及軟體的測試、維護與管理。
軟體開發技術包含軟體工程方法學、軟體工具和軟體開發環境;軟體工程管理學包含軟體工程經濟學和軟體管理學。
[編輯本段]軟體工程基本原理
著名軟體工程專家B.Boehm綜合有關專家和學者的意見並總結了多年來開發軟體的經驗,於1983年在一篇論文中提出了軟體工程的七條基本原理。Boehm
(1)用分階段的生存周期計劃進行嚴格的管理。
(2)堅持進行階段評審。
(3)實行嚴格的產品控制。
(4)採用現代程序設計技術。
(5)軟體工程結果應能清楚地審查。
(6)開發小組的人員應該少而精。
(7)承認不斷改進軟體工程實踐的必要性。
B.Boehm指出,遵循前六條基本原理,能夠實現軟體的工程化生產;按照第七條原理,不僅要積極主動地採納新的軟體技術,而且要注意不斷總結經驗。
軟體工程(SoftWare Engineering)的框架可概括為:目標、過程和原則。
(1)軟體工程目標:生產具有正確性、可用性以及開銷合宜的產品。正確性指軟體產品達到預期功能的程度。可用性指軟體基本結構、實現及文檔為用戶可用的程度。開銷合宜是指軟體開發、運行的整個開銷滿足用戶要求的程度。這些目標的實現不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。
(2)軟體工程過程:生產一個最終能滿足需求且達到工程目標的軟體產品所需要的步驟。軟體工程過程主要包括開發過程、運作過程、維護過程。它們覆蓋了需求、設計、實現、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟體需求規約。需求分析生成功能規約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟體系統結構,包括子系統、模塊以及相關層次的說明、每一模塊的介面定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數據結構說明及加工描述。實現活動把設計結果轉換為可執行的程序代碼。確認活動貫穿於整個開發過程,實現完成後的確認,保證最終產品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。
(3)軟體工程的原則是指圍繞工程設計、工程支持以及工程管理在軟體開發過程中必須遵循的原則
㈦ 程序員裝備一套詳細解釋需要哪些設備
好的座椅、機械鍵盤、滑鼠、蘋果辦公、有逼格的咖啡杯、三屏模式。
詳細解釋如下:
很多程序員調侃需要一本《頸椎康復指南》。如果程序員頸椎出現問題,一般是座椅不符合人體工學的,好一點的座椅一般是不會這樣的。
對於一個程序員來說,用機械鍵盤打字編程真心是一種享受。不少的程序員每天一千行的代碼量,用上機械鍵盤,簡直是快到不行。
程序員編程沒有用滑鼠的,一直被歸於裝X系列。但是,確實有些人能做到不用滑鼠就可以編程。滑鼠跟機械鍵盤搭配才能最高效率編程。
序員崇尚極簡主義,他們的觀念是越簡單越好。蘋果正好符合。
不少的程序員都是咖啡小王子,就算是喝咖啡杯,也要喝出自己的個性。印有編程語言logo,直接告訴你是拜在哪個祖師爺門下。
程序員當然需要CPU夠快的電腦,同時還要開啟三屏模式,最理想的狀態就是,一個豎屏放代碼,一個橫屏調試,一個主屏幕,這樣就不怎麼需要窗口切換。
㈧ 什麼叫高級處理器
你這樣的問題我有點難得回答呀,范圍太大了,
總體來說CPU現在算高級的就是雙核的,更高級的就是4核的了,INTEL有賽揚的雙核、有奔騰的雙核、有酷睿的雙核、又有酷睿2的雙核、還有4核,E開頭的、T開頭的、P開頭的等等。AMD的4800+以上的都算高級處理器了,更高的有巴塞羅納等等
再給你加個:
了解高級處理器特點 提高編碼效率
Understanding Advanced Processor Features Promotes Efficient Coding
ADI公司 David Katz,Tomasz Lukasiak與Rick Gentile
如今的數字信號處理器(DSP)在性能、外圍設備集成、功耗和成本方面都具備很多優勢,很多系統設計人員希望在原有系統設計中利用DSP獲得比傳統處理器更好的效益。但其中一個潛在障礙就是為應用開發的大量遺留C/C++語言代碼。顯然,工程師們希望能夠在DSP平台上最大程度地利用原有高級語言代碼,同時充分利用DSP的結構特點,達到原平台無法企及的高性能。此外,設計人員還需要一個熟悉、直觀的程序開發環境和一種簡單的方法,用於有選擇地進行匯編語言的例行程序。本文將介紹在當前的開發環境下為DSP編程的策略與技巧,其中以ADI公司推出的Blackfin 媒體處理器系列作為示例。
高級語言與匯編語言:兩者的結合是最佳辦法
在進行一項基於DSP的項目開發時,必然要面臨的一個問題就是選擇使用何種編程方法。選擇的結果通常都是在匯編語言與高級語言如C或C++之間選擇其中一種。而在選擇過程中往往需要考慮許多其它的因素,因此,在選擇之前了解這兩種語言的長處與不足是十分重要的。
C/C++的好處包括模塊化、可移植性以及可復用性。此外,不僅大多數的嵌入式程序設計員使用過這種高級語言,而且已經存在大量的代碼基礎,可以通過一種相對簡單的方法將這些代碼從原來的微控制器或DSP移植到新的DSP平台中。而匯編語言是針對特定體系結構的,因此代碼重用僅限於同一系列的處理器。此外,一個系統開發項目組通常劃分成不同的開發小組,分別負責不同的系統模塊,採用高級語言可以使這些功能交叉的開發小組不必知道各自的處理器平台。
傳統的匯編語言因為難懂的語法以及奇怪的首字縮寫而長期受到貶低。而現在這些因素在採用稱作"代數語法"的結構中已不成什麼問題。圖1中所給出的示例就是將典型的DSP指令分別以傳統的格式和代數格式表示時的對比。從圖中可以清楚地看出後者的結構要比前者更加直觀。
使用匯編語言編程困難的原因之一,就是它專注於DSP寄存器組、運算單元與存儲器之間的數據交流。而在C/C++高級語言中,這一過程通常是通過調用變數、函數以及子程序的方法在一個更加抽象的層面來完成的,因此使得編程更為簡單。
如今,C/C++編譯器所包含的內容十分豐富,其中許多功能可以完成將高級語言代碼編譯為嚴密的匯編語言代碼。事實上,編譯過程中最好的方法就是通過編譯器中的優化程序完成任務。但工具開發人員認為最重要的一系列功能,將影響編譯器的性能。因此,高級語言代碼不可能在所有方面都超過手工的匯編語言代碼。
程序開發人員通常只是在需要優化重要的密集型數據處理代碼程序塊時才會使用匯編語言,以提高程序在DSP上的運行效率。盡管高級語言編譯器在程序優化轉換方面做的很好,但在對DSP數據流與運算進行直接、仔細的控制時仍然存在不足之處。這也是許多程序設計員經常將C/C++ 等高級語言與匯編語言結合使用的原因。高級語言在程序控制以及基本的數據處理方面有著不錯的表現,而匯編語言則在高效的數學運算與速度最為關鍵的中斷服務常式方面體現出明顯的優勢。
高效編程的結構特點
匯編程序員要使編寫的程序高效運行,就必須要了解DSP與未針對超高速數據處理進行優化的普通處理器的區別。這些結構特點包括:
特殊的定址方式
硬體循環結構
可緩沖的存儲器
單循環執行多個操作
互鎖流水線
靈活的數據寄存器文件
這些結構特點可以在提高計算效率方面起到十分大的作用。下面逐個討論這些特點。
特殊的定址方式
如果要求處理器在一個單循環中訪問多個數據字,那麼就需要處理器在地址生成方面具有完全的靈活性。除了在16位與 32位范圍內的以DSP為主的訪問大小之外,需要使用位元組編址的方式才能達到最高效率的數據處理。這一點十分重要,因為在一些通常的應用中,包括許多以視頻為基礎的系統,都是以8位數據方式工作的。當存儲器的訪問被局限在單一的范圍內時,處理器就需要額外的循環用於屏蔽相關的位。
定址方式的另一個好處就是採用了"循環緩沖"功能。這一功能必須是由DSP在不藉助任何專門軟體管理而直接支持的。程序設計員可以利用循環緩沖功能在存儲器中定義緩沖區,程序執行時會自動跳過這一段。當緩沖區建立後,也無需專門的軟體管理這段數據。地址生成器不僅會處理不一致的跳躍,而且更重要的是它能夠如圖2中所示具備"環繞式處理程序"功能。如果沒有這種自動生成地址的功能,程序員將不得不人工跟蹤緩沖區,這樣就會浪費大量寶貴的處理周期。
一種基本的、用於高效率信號處理操作(如快速傅立葉變換與離散餘弦變換)的定址方式是位反轉技術。單從字面上理解,"位反轉"就是要按照二進制地址將位反轉。即把最不重要的位與最重要的位進行位置交換。基2蝶形運算所需的數據排序是按照"位反轉"的順序,因此在進行快速傅立葉變換階段需要用到位反轉索引。利用軟體可以計算出這些位反轉索引,但這種做法的效率十分低。圖3中給出的是位反轉地址流程示例圖。
硬體循環構造
在通信處理演算法中,循環是十分關鍵的功能。對於大多數演算法而言,有兩種與循環相關的功能可以提高演算法的性能。第一種被稱之?quot;零開銷硬體循環"。利用定址功能,循環構造通過硬體來實現。當然,這一功能也可以通過軟體來實現,此時相關的開銷則會影響到實時處理的性能。程序設計員通過"零開銷循環"對循環進行初始化,其方法就是建立一個計數值並定義循環范圍。處理器將不斷地執行這一循環直至達到這一計數值。
大多數DSP都支持"零開銷循環",但"硬體循環緩存"能夠真正提高循環結構的性能。它們用作存放循環中所執行指令的一個高速緩沖存儲器。例如,在循環執行了第一次之後,指令可以暫時存放在循環緩沖器中以備下次使用,從而在整個循環過程中就無需每次重取相同的指令。將循環中的指令存放在一個整個循環過程都能訪問到的緩存器中,這樣就能極大地節省循環次數。雖然這一功能無需程序設計員另外進行設定,但程序員必須了解緩存器的大小,這樣才能正確地選擇相應的循環大小。
可緩沖的存儲器
標準的數字信號處理器通常都有少量片上高速存儲器。微控制器通常能夠訪問較大的外部存儲器。分層式存儲器結構則匯集了這兩種方法的優點,提供了幾種具有不同性能層次的存儲器。對於最需要決定的應用,片內的SRAM可以在每個核心時鍾周期內完成一次訪問。而對於那些代碼量更大的系統,則可使用容量更大、等待時間稍長、片上或片外的存儲器。
就其本身而言,這種分層式結構的作用只是相對的,因為當今的高速處理器只是以較慢的速度有效地運行,因為大型的應用只配備有速度相對較慢的外部存儲器。此外,程序設計員也不得不手工地將重要代碼從內置式SRAM中移進移出。然而,如果在結構中增加了用於存放數據與指令的高速緩沖存儲器,外存儲器就變得更加易於管理了。高速緩存可以減少用手工方式移動指令與數據進出處理器內核的次數。這樣程序設計員就無需考慮進入處理器內核數據與指令流程的管理,從而極大地簡化了編程模式。
圖4是一個標準的存儲器配置,其中的指令可以根據需要從外存儲器中調入。指令高速緩存通常與一些最近最少使用(LRU)演算法一起使用,這樣就能夠確保那些經常使用的指令取代那些較少使用的指令。從圖中可以看出:通過配置象高速緩存這樣的片上存儲器以及SRAM等存儲器,還可以優化處理器的性能。DSP控制器能夠直接向內核寫入內容,而來自表中的數據則可以根據需要被調入數據高速緩存。
每個循環執行多個操作
處理器的衡量標准通常是每秒所能執行的百萬條指令數(MIPS)。然而,對於現在的處理器而言,這一標准則會由於組成每條指令含混的內涵而引起誤解。例如,過去因用於高端並行處理器而保留的多事件指令現在仍然用於低成本的定點處理器。在每個核心處理器周期內,除了執行多ALU/MAC操作之外,多餘數據的載入與存儲操作也可以在同一周期內完成。存儲器通常被分成幾個子存儲空間,這樣它就能夠被內核或DMA控制器進行雙重訪問了。正如前面所述的基於硬體的定址計算中進行的分析那樣,在一個單周期內完成多項操作是顯而易見的。
圖5中描述的是多操作指令示例。如圖中所示,在同一個處理器時鍾周期內,除了進行兩個 MAC 操作之外,還完成了一次取數據和存數據的操作。
互鎖流水線
隨著處理器的速度不斷提高,處理器的處理流水線也應該隨著整體性能的提高而不斷加深。理解這點十分重要,因為在需要使用匯編語言時,流水線可能會使編程更加具有挑戰性。而現在一些處理器已經使用了互鎖流水線。這就意味著,在使用匯編語言編程中,程序設計員無需人工安排或跟蹤數據與指令的流向,因為這些工作將全部由處理器進行自動處理。
靈活的數據寄存器組
最後,數字信號處理器的另一項功能就是通用數據寄存器組。對於傳統的數字信號處理器而言,字長通常是固定的。而如果數據寄存器既能被看作是一個32位字(如R0),也能被看作是兩個16位字(R0.L 與 R0.H,分別用於高和低的一半),其優點十分明顯。在雙MAC系統中,這樣就允許在一個時鍾周期內進行四個16位數據操作。
編程代碼對比與分析
上述介紹的結構框架是DSP高效編程的基礎。如果程序設計員能夠充分利用處理器的所有功能,許多常見的數學演算法可以極為快速的完成。下面挑選出一些常用的演算法,並介紹它們在DSP中的用法。需要注意的是,當程序員需要在匯編水平上檢查代碼的高效性時,如今經優化的DSP編譯器同樣採用了很多匯編程序設計員使用的規則。下面的示例使用的是Blackfin處理器匯編語言。
標量積
標量積是在測定兩個矢量正交性時的一種十分有用的操作。大多數的C語言程序設計員都會對下列這個標量積運用十分熟悉:
short dot(short a[], short b[], int size) {
int i;
int output = 0;
for(i=0; i<size; i++) {
output += (a[i] * b[i]);
}
return output;
下面是匯編語言代碼的主體部分:
//P0=loop count, I0 & P1 are address registers
A1 =A0 =0; //A0 & A1 are accumulators
LSETUP(loop1,loop1)LC0 =P0;
//Set up hardware loop starting at label loop1:
loop1: A1 += R1.H * R0.H , A0 += R1.L * R0.L || R1 = [ P1++ ] || R0 = [ I0 ++ ] ;
利用下面介紹的幾項數字信號處理器結構功能,將有助於編程。
通過使用硬體循環緩沖器與循環計數器,則無需在每次反復操作結尾時執行跳轉指令。 由於標量積是一個累加的和,它是通過一個循環來實現的。為了執行循環中的下一次反復操作,許多RISC微控制器都是在每次反復操作結尾使用一條跳轉指令。匯編程序中為LSETUP 指令,這是執行一個循環所需的唯一指令。
多事件指令允許在一個時鍾周期內執行指令和兩次數據訪問。在每次反復操作中,值 a[i] 與 b[i] 都一定會被讀取,然後相乘,並最後重新寫回到變數輸出的運行總和中。在大多數的微控制器平台中,這一過程需要使用四條指令。從匯編語言代碼中的最後一行可以看出,這些操作可以在一個時鍾周期內完成。
並行ALU操作允許兩個16位指令可以同時執行。匯編語言代碼表明兩個累加單元(A0 與 A1)在每次反復操作中都會被用到。這樣就能夠將反復操作的次數減少50%,從而有效地將執行時間縮短了一半。
FIR
有限脈沖響應濾波器(FIR)是一個與卷積操作一樣常用的濾波器程序結構。簡單的C 語言命令與標量積十分相似:
// sample the signal into a circular buffer
x[cur] = sampling_function();
cur = (cur+1)%TAPS; // advance the cur pointer in a circular fashion
// perform the multiply-addition
y = 0;
for (k=0; k<TAPS; k++) {
y += h[k] * x[(cur+k)%TAPS];
}
FIR的核心部分用匯編代碼表示出來之後與標量積的格式十分相似。事實上,DSP相同的功能也被用於實現執行演算法的最高性能。在本例中,信號采樣存貯在寄存器R0中,系數則存貯在寄存器R1中。
// P0 holds # of filter taps
R0=[I0++]||R1=[I1++]; // set initial values for R0 and R1
A1=A0=0; // zero the accumulators
LSETUP(loop1,loop1)LC0 =P0; // configure inner loop
loop1: A1+=R0.L*R1.L, A0+=R0.H*R1.H || R0 = [I0++] ||
R1 = [I1++]; // compute
除了具有上述標量積的功能之外,上例中的FIR演算法還使用了循環緩存器。
通過循環緩存器則無需使用明顯的模運算。在C語言代碼片斷中, % (模數)運算符提供了一種用於循環緩沖的機制。如匯編核心程序所示,該模運算符在循環內部並沒有轉換為一條另外的指令。取而代之的是,數據地址生成寄存器I0 與 I1 在循環外進行了設置,並且自動返回系數緩存器邊界的開始位置。
FFT(快速傅立葉變換)
快速傅立葉變換是許多信號處理演算法的核心部分。它的特點之一就是輸入矢量按照時間順序排序,而輸出矢量則是按照"位反轉"的順序。大多數傳統的通用型處理器都要求程序設計員執行一個單獨的程序,用於將經位反轉的輸出矢量復原。在數字信號處理器平台中,位反轉已經被設計在定址部分中了。
在執行快速傅立葉變換過程中,通過位反轉定址則無需使用單獨的位反轉程序。允許硬體對快速傅立葉變換演算法中的輸出矢量自動進行位反轉,這樣程序設計員就不用另外編寫應用程序,從而提高了處理器的性能。
除了上述介紹的指令結構之外,象 Blackfin這樣的處理器 還另外包括一些專用的指令集用於支持大范圍的應用。這些指令的作用是將處理器的處理能力進一步擴展到其它一些演算法,如Viterbi, Huffman編碼以及許多其它的位處理程序。
至此,可以清楚地認識到:在確定一個基於DSP應用的編程方案時,有許多需要考慮的內容。使用C 或C++ 這類帶強大編譯器與優化程序功能的高級語言可以快速地開發出各種產品,但使用手工編程的匯編語言則是在處理器以外獲取額外性能的最佳方法。當然,採用匯編語言的前提是選擇一種在結構上基本支持高效編碼的處理器。
㈨ 最火的編程語言是哪個
編程語言排行榜是:Java、C語言、python、C++、 Visual Basic。
Java非常強大的適用性,而且入門學習Java也能很快上手,而在代碼邏輯方面,Java也做到了無懈可擊,清晰不混亂,而且因為自身機制原因,Java還很適合在移動端領域深造,安卓和ijos都是經過Java製作的,在領域方面Java是涉及的非常廣泛。
python編程語言上升速度最快,越來越受程序員的青睞主要歸因於python對大數據的處理能力,性能表現優良,語法相對簡單,學習成本較低。人工智慧及雲計算的發展,國家推廣人工智慧教育, python被一些學校作為教學語言。培訓機構借人工智慧的聲勢,宣傳 python的各種優勢,所以,迅速在大眾中傳插。就如區塊鏈技術。