表情燈源碼
① 如何使用Cocos2d-x完美呈現捕魚3
捕魚達人3與前兩部相比,技術上有哪些突破和創新?
捕魚達人3作為前兩代成功作品的續作,我們需要從玩法到技術,全面超越前代。所以在技術上,我們主要做了下面一些突破和創新:
1)魚的3D渲染。 跟2D渲染相比,3D渲染可以讓魚看起來更加立體和真實。 3D骨骼動畫可以讓動作更加豐富和平滑。另外我們還為魚增加了表情動作,讓魚兒更具個性化。
2) 純3D路徑。 前兩代的2D路徑在我們新的3D場景下,表現力要弱很多。為此我們設計了全新的3D路徑編輯器,魚的游動不僅僅在一個面上游動,而是一個立體空間,這樣魚的游動過程會更加平滑和真實。
3) 豐富的武器表現效果。 以前的武器效果,我們一般是結合幀動畫和粒子效果實現,在捕魚3中,我們的武器很多是通過 shader 實現的,讓效果更加絢麗和富於變化。比如閃電武器,泡泡武器等。
4) 3D的後處理和燈照效果。大家可以看到我首屏模擬海洋的效果,就用到相關技術。還有魚身上的波光效果。
2.《捕魚達人3》使用了最新的Cocos2d-x中3D功能,它有哪些突出的亮點?請舉幾個游戲里的具體案例說明
1)繼承Cocos2d-x的設計思路,只要具備Cocos2d-x的編程經驗, 在使用和理解上完全無障礙,可以立馬上手寫代碼。
2) 豐富的材質系統,可以自定義模型不同渲染效果。 比如:我們的魚身上的渲染效果已經電鰻魚的閃電效果
3) 強大的模型編輯器,可以自定義模型的材質
3. 引擎3D功能使用的時候感覺和2D部分區別在哪?
設計理念和開發流程和2D差不多
4. 游戲裡面的動畫效果,是UI實現的,還是Cocos引擎的3D效果?比如那個漩渦,是不是使用引擎的3D效果可以做很多不同的漂亮效果呢?
渲染時用3D的材質系統實現的, 由於材質系統的擴展能力很強,做出各種漂亮的效果完全沒問題。
5. Cocos2d-x的3D技術穩定性如何?是否已經到了可以大規模市場化應用的階段?
挺好的,我們Android版本的適配度高達92%以上。
6. 引擎粒子效果的效率一直備受爭議,請問捕魚達人3有沒有專門做優化?
我們對同一種粒子做了批次處理。另外,還通過腳本, 嚴格控制了粒子的個數,不能超過某個上限值。
7. 在《捕魚達人3》開發過程中,遇到哪些困難和挑戰?你們是如何克服的?
游戲開發都會面臨一個資源的管理問題,就是資源如何從美術製作,在到程序使用以及後續的維護。捕魚3的資源類型比較多。2D層有圖片,ui資源,動畫資源,字體資源,粒子資源。 3D層又涉及3D模型,材質,紋理,shader等。另外,還有track,策劃配置文件等。所以種類非常多。 還因為捕魚3的適配性要求比較高,所以,我們有些資源按照解析度有劃分了幾大類。 還附加一條,資源還分不同的語言版本。 上線之後,資源本身還需要跟隨發布版本一起維護。所以中間的問題非常多。 在我們項目中會嚴格對資源進行規范, 包括命名,目錄結構。資源如何從美術維護的目錄流動到程序使用的目錄等。另外還維護了一套基於ant+python的腳本來去驅動資源的流轉。 實現一鍵生成程序所需要的資源。 無須人工的干預, 非常便捷。
另外我們還有一鍵打Windows,iOS,Android各種程序包的腳本,方便做版本的daily build。
8. 《捕魚達人3》的背後一定有一支強大的團隊,包括多方面能力的配合,能否分享一下團隊協作和管理的經驗?
就我們研發而言, 其實最重要是前期做好開發規范,然後打造融洽的團隊氛圍,明確每個人的開發任務,大家隨著項目的發展一起往前進步。
9. 最後,對其它有志進入手遊行業或者在摸索中前行的手游開發者,您能否給一些建議?
雖然很多媒體都在高喊:手游已是一片紅海。 但這個市場遠沒有飽和,移動設備的增量仍然很大。而且區別於端游市場的客戶端大作,頁游市場的各種網游。手游的游戲類型更加多樣化,更加豐富。休閑的,棋牌的,各類網游,都有成功的案例。所以,這個市場更加靈活,更適合小團隊創造奇跡,仍然有很多的機會。另外從技術上講,由於存在Cocos2d-x這種幾乎處於壟斷地位的引擎, 手游也是一個更加開放的市場。 網上有一大堆的學習資料和游戲源碼, 只要你有點計算機基礎,入門還是很容易的。重要的是自己能夠靜下心來多看多寫些代碼,爭取獨立發布一款產品。我見過不少人自己做一點東西都沒堅持下來,做一半就放棄掉。其實在多堅持下,離成功就近了很多。
② 全球最受歡迎表情符號「笑哭」登頂
2021全球最受歡迎表情符號「笑哭」登頂
2021全球最受歡迎表情符號「笑哭」登頂,實際上,笑哭和紅心也是 2019 年最受歡迎的兩個表情符號,這是最後一次共享表情符號數據。2021全球最受歡迎表情符號「笑哭」登頂
全球最受歡迎表情符號「笑哭」登頂1
12 月 3 日消息,Unicode 聯盟公布的 2021 年全球最受歡迎的表情符號名單顯示,「笑哭(Tears of Joy)」仍然是 2021 年全球最受歡迎的表情符號之一。
刀客源碼網掌握到,Unicode 聯盟數據顯示,「笑哭」占所有表情符號使用的 5% 以上,唯一與之接近的表情符號是心形表情。
此外,2021 年最受歡迎的表情符號還包括在地上打滾的笑臉、豎起大拇指、大哭、雙手合十、飛吻、心形臉、心形眼睛的臉和笑臉
值得一提的是,最受歡迎的表情符號在過去幾年裡並沒有多大變化。實際上,笑哭和紅心也是 2019 年最受歡迎的兩個表情符號,這是 Unicode 聯盟最後一次共享表情符號數據。
榜單上的其他表情符號的位置也有所變化,有一些是新出現的,比如豎大拇指和心形臉。
emoji就是表情符號,來自日語詞彙「絵文字」(假名為「えもじ」,讀音即emoji)。
emoji的創造者是日本人栗田穰崇(Shigetaka Kurita),他將目光投向兒時的各種元素以獲取靈感,如日本漫畫和日本漢字等。「日本漫畫中有許多不同的符號。漫畫家會畫出一些表情,表現一個人滿頭大汗或是迸發出一個想法時頭上出現一個燈泡。」同時,從日本漢字中他獲得了一種能力,用簡單的字元來表達「秘密」和「愛」等抽象概念。
2014年8月,牛津詞典在線版(Oxford Dictionary Online)把「Emoji」添加到新詞彙中,這也意味著它已經變成一個正式詞彙。
全球最受歡迎表情符號「笑哭」登頂2
12 月 2 日,Unicode 表情聯盟公布了 2021 年全球最受歡迎表情符號," 笑哭 " 使用佔比超 5%,成功登頂全球最受歡迎表情。
Unicode 表情聯盟公布的數據顯示,使用佔比能與 " 笑哭 " 表情抗衡的只有 " 心形 " 表情,其他受歡迎表情還有地上打滾的笑臉、豎起大拇指、大哭、雙手合十、飛吻、心形臉、心形眼睛臉以及笑臉。
需要注意的是,雖然近幾年各大公司推出了不少新表情,但這些表情無法撼動經典表情的地位,今年的受歡迎表情與 2019 年發布的上一次數據沒有太大區別。
另一個有趣的發現是前100個表情符號約占所用表情符號的ྎ%。另外,有一些常用的表情符號其實代表多個意思:
火箭起飛,象徵著正在取得的進展和對未來大變化的預期;
彎曲的二頭肌是最熱門的身體部位表情符號,通常用於表示力量、成功、克服斗爭、鍛煉、炫耀、吹噓或捲起袖子來接種疫苗。
適合所有場合的植物花束:祝賀、慶祝和各種關系。
蝴蝶是最常見的動物表情符號,代表變化、美麗、自然和轉變。
做側手翻的人,這可能不是世界上最受歡迎的運動,但它含有幸福和快樂的意思。
那麼最不常用的表情符號呢?
旗幟。雖然有200多個表情符號,也就是200多個國家,但被使用得最少。
動物,這類有53個表情符號,也用得很少。
全球最受歡迎表情符號「笑哭」登頂3
據報道,Unicode聯盟統計的2021年全球表情包使用頻率排名出爐,「笑哭」蟬聯全球第一。
身為數字文本標準的制定者,Unicode聯盟的數據顯示,2019年全球10個最常用的表情符號中(這也是他們之前最後一次發布這一數據),有9個今年依然得以上榜。笑哭符號蟬聯第1,紅心符號位居第2,盡管「Z世代」並不認為這很酷。
2021年其他最受歡迎的表情符號包括「笑得在地上打滾」、「點贊」、「傷心哭泣」、「雙手合十」、「飛吻」、「帶愛心的笑臉」、「花痴」和「笑臉」等。
在過去幾年裡,最受歡迎的表情符號沒有什麼變化,事實上,「笑哭」和「紅色愛心」也是2019年排名前兩位的表情符號。榜單上的其他表情符號的位置發生了變化,還有一些是新進入前十名榜單的,比如「點贊」和「帶愛心的笑臉
Unicode表情符號小組委員會主席珍妮佛·丹尼爾(Jenifer Daniel)認為,「Z世代」不喜歡某些表情符號很正常。她表示:「這是青少年創造亞文化的經歷中的一個組成部分,其中有正確的行為方式,也有錯誤的行為方式。」
蘋果將推出70款全新Emoji表情
據了解,這一次的蘋果所推出的表情符號全部基於Unicode 11.0 獲批字元製作而成,並且得到了 Unicode Consortium 表情符號委員會的批准。在本次更新中,將推出更多的紅發、白發和卷發人物的樣貌,還有全新的光頭人物表情符號可供選擇,以及全新的笑臉符號包括寒冷臉、派對臉、懇求臉和帶有愛心的表情。
與此同時,蘋果還新增了袋鼠、孔雀、鸚鵡和龍蝦。此外,還推出了新的食物表情符號,如芒果、生菜、紙杯蛋糕、月餅及其他受歡迎的事物。
此外,蘋果官方還表示,在今天晚些時候還將推出更多運動、標志等表情符號,包括新的超級英雄表情符號、壘球、邪惡之眼護身符和無限符號。不過目前蘋果還是尚未公布這些表情的具體上線時間,按照時間來推測,很有可能將會和iOS 12正式版一同推出。
③ 信息技術作業!~
我們在基本配置中已經認識了主機箱、顯示器、鍵盤、滑鼠、音箱和話筒。這些我們能夠看得見、摸得著的設備就是我們常常說起的"硬體",它就好比我們人類的大腦和身體,是物質的,是進行一切活動的基礎。 鍵盤、滑鼠和話筒都是給計算機送信號的,於是我們叫它們"輸入設備",而顯示器、音箱是為計算機向外界傳達信息的,於是我們叫它們"輸出設備"。這就好像我們的眼睛、耳朵和鼻子是給我們以視覺、聽覺、嗅覺信息的,而我們的嘴、面部表情和四肢是表達我們的看法和感情的。是否還有其他的輸入和輸出設備呢?不但有,而且還非常多。事實上,正是各種功能各異的外圍設備使我們的計算機變得更加豐富多彩。主要的輸入設備還有掃描儀、數碼相機甚至影碟機,輸出設備有各種列印機。
中央處理單元(CPU)
CPU這三個字母是英文"Central Processing Unit"的縮寫,中文意思是"中央處理器"。CPU讀起來省事又好記,所以,很少有人說它的中文全名了。 中央處理器,顧名思義,就是"把數據收集到一起集中進行處理的器件"。CPU是一個電子元件,直接處理計算機的大部分數據,它處理數據速度的快慢直接影響著整台電腦性能的發揮,所以人們把CPU形象地比喻為電腦的心臟。 CPU的速度是用什麼來表的呢?我們常常聽人這樣說:"這個CPU的主頻是166兆赫茲。"CPU有主頻、倍頻、外頻三個重要參數,它們的關系是:主頻=外頻×倍頻,主頻是CPU內部的工作頻率,外頻是系統匯流排的工作頻率,倍頻是它們相差的倍數。CPU的運行速度通常用主頻表示,以赫茲(Hz)作為計量單位。兆是10的6次方,"兆赫茲"寫作"MHz"。CPU的工作頻率越高,速度就越快,性能就越好,價格也就越高。目前的CPU最高工作頻率已達到1500MHz以上。
計算機之所以能夠在二十幾年中在全世界迅速普及,主要原因是它功能的強大、操作的簡便化和價格的直線下降。而計算機功能的每一次翻天覆地的變化都是由於CPU功能的大幅度改進。我們常說的286、386、486到今天的586、Pentium Ⅱ都是CPU的型號。CPU的主要生產廠商Intel公司用"80X86"系列作為自己生產的CPU名稱,例如,486就是80486的簡稱。 90年代以後,由於其他CPU廠家的CPU型號也是用486、586來表示的,這就使很多人誤以為凡是標明為486、586的CPU都是Intel公司的產品。為了與其他廠家區別開來,Intel 公司將自己的586改名為"Pentium",中文譯為"奔騰"。近年來,Intel公司又相繼推出了Pentium MMX和Pentium Ⅱ。CPU每一次技術的革新,都帶來相應的名稱變化和計算機速度的大幅度提高。 目前,著名的CPU生產廠家除了Intel公司外,還有AMD公司、Cyrix公司等,他們的CPU性能也不錯,同等檔次的產品價格較Intel公司的低一些。
內存與硬碟
您可能經常聽別人說,某台電腦的內存不夠了,硬碟太小了之類的話。這里的"不夠"、"太小"都指的是它們的容量,而不是他們的數量或幾何形狀的大小。內存和硬碟都是計算機用來存儲數據的,它們的單位就是我們剛剛談過的"Bytes"。 那麼,為什麼一個叫內存,一個叫硬碟呢?我們知道,計算機處理的數據量是極為龐大的,就好比一個人在堆滿了穀物的倉庫里打穀子,那怎麼施展得開,工作效率又怎會高呢?於是,人們把穀子堆在倉庫中,自己拿了一部分穀子到場院中去打,打完了再送回去。這下子,可沒什麼礙事的東西了,打穀子的速度快多了,內效率提高了。計算機也是這樣解決了同類的問題。它把大量有待處理和暫時不用的數據都存放在硬碟中,只是把需要立即處理的數據調到內存中,處理完畢立即送回硬碟,再調出下一部分數據。硬碟就是計算機的大倉庫,內存就是它幹活的場院。 內存簡稱RAM,是英文Random Accessmemory的縮寫。在個人計算機中,內存分為靜態內存(SRAM)和動態內存(DRAM)兩種,靜態內存的讀寫速度比動態內存要快。目前市面上的內存條以"MB"為單位,比如32MB的和64MB的內存條。硬碟容量要比內存大得多,現在以"GB"為單位已屬常見。當然了,內存和硬碟容量都是越大越好。可是容量越大,價錢就越高。重要的是,我們要選購夠用而又不造成浪費的內存條和硬碟。如圖-5所示為一塊硬碟。
驅動器
要想了解軟盤和光碟中的信息,就必須把他們分別插入到軟盤驅動器和光碟驅動器中,供計算機對上面的數據信息進行識別和處理。軟盤驅動器和光碟驅動器都位於機箱中,只把它們的"嘴巴"露在外面,隨時准備"吃進"軟盤和光碟。至於硬碟,由於它是不可移動的,所以被固定於驅動器之中,也就是說,硬碟和硬碟驅動器是一體的。將軟盤插入軟盤驅動器時要注意方向,3.5吋盤在插入時應該使轉軸面向下,金屬片朝前,聽到驅動器口下方的彈出按鈕"喀噠"一聲彈出,說明軟盤插好了。取出時,應該先按一下彈出按鈕,軟盤會自動彈出一部分,接著將軟盤抽出。現在,使用5.25吋盤的人越來越少,計算機上已很少安裝5.25吋軟盤驅動器。 值得注意的是,軟盤驅動器的上方或下方有一個小小的指示燈,當指示燈亮時,說明計算機正在讀或寫這個驅動器內的軟盤,硬碟驅動器的指示燈也位於主機箱前面板上,指示燈亮時,表明計算機正在讀或寫硬碟。驅動器指示燈亮時,不能取出相應驅動器內的軟盤或關機,否則可能會對磁碟造成損壞。 一台計算機可能有不止一個軟、硬碟驅動器,怎樣區別它們呢?我們採取給驅動器取名字的辦法。驅動器的名字都是用單個的英文字母表示的,用A和B來表示軟盤驅動器,用C、D、E來表示硬碟驅動器,光碟驅動器一般用字母H來表示。這樣,就有了我們常說的"A驅、B驅、C驅、D驅",每台計算機一般只有一個光碟驅動器,所以經常簡稱之為"光碟機"。
計算機之所以能夠具有如此強大的數據處理能力,是因為主機箱內的重要部件忠實的各司其職。想認識一下這些功臣嗎?用螺絲刀擰下機箱殼上的螺絲,輕輕的取下機箱殼,就可以看見計算機的廬山真面目了。 如下圖所示,機箱中有一塊電源、一個硬碟驅動器、一個光碟驅動器、一個軟盤驅動器、一塊插滿了電子元件的電路板--主板及帶狀的導
線,叫做數據線。下面我們一一介紹它們的作用。
計算機電源 如圖-9所示為計算機電源。計算機內部所需電壓不超過12V,而市電電壓是220V。計算機電源相當於一個變壓器,把220V電壓轉化為計算機內硬體設備所需的電壓,並向各部件供電。電源上有一束各種顏色帶介面的導線,它們用來與主板、軟碟機、光碟機、硬碟、CPU風扇等部件的電源介面相連,給它們供電。
電源插座 計算機需要電才能運作。計算機機箱里有一個電源,電源上有很多導線及介面。計算機電源是給主機箱中的各個硬體設備供電的。導線及介面要分別接到主板、硬碟、光碟機、軟碟機的電源插座上。
系統主存插槽與內存條 上文說過,內存是計算機幹活的"場院",是它處理數據的地方。那麼內存以何種形式存在呢? 在主板上,有專門用來安插內存條的插槽,叫做"系統主存插槽"。大部分Socket 7架構主板提供72線(白色)和168線(黑色)的內存插槽。72線插槽叫做DRAM插槽,用來插DRAM內存條;168線插槽叫做SDRAM插槽,用來插SDRAM內存條。而Slot 1架構主板上只提供168線的黑色SDRAM插槽。 通常,DRAM內存條又稱作SIMM,SDRAM內存條又稱做DIMM。按容量大小內存條可分為8MB、16MB、32MB、64MB等種類。您可以根據自己主板上的內存插槽類型和個數酌情增插SIMM或DIMM擴充計算機內存。
擴展槽與擴展匯流排 擴展槽為個人電腦提供了功能擴展的介面。它可以連接音效卡、顯卡等設備,並把它們的信號傳給主板電路,同時,將主板的信號傳遞給外部設備。擴展槽成了主板與外界交流的橋梁, 使個人電腦的用途得以擴展。擴展槽的介面有ISA、PCI、AGP三種。ISA介面用處不大,但仍不可缺少;PCI介面用途較廣;AGP是新興的3D圖形加速埠。PCI擴展槽為白色,AGP和ISA擴展槽一般為黑色。 如圖1-12所示為PCI擴展槽。 圖1-11 PCI擴展槽 匯流排是主板與插到它上面的板卡的數據流通通道。有了匯流排,各板卡才能與主板建立聯系,供計算機使用。擴展槽口中的金屬線就是擴展匯流排,板卡插到擴展槽中時,其管腳的金屬線與槽口的擴展匯流排相接觸,就達到了信號互遞的作用。擴展槽有ISA、PCI、AGP三種類型,相應的擴展匯流排也分為ISA、PCI和AGP三種類型。
RAM、ROM是什麼?它們的特點是什麼?區別是什麼?
簡單地說,在計算機中,RAM 、ROM都是數據存儲器。RAM 是隨機存取存儲器,它的特點是易揮發性,即掉電失憶。ROM 通常指固化存儲器(一次寫入,反復讀取),它的特點與RAM 相反。ROM又分一次性固化、光擦除和電擦除重寫兩種類型。
RAM(Random Access Memory)的全名為隨機存取記憶體,它相當於PC機上的移動存儲,用來存儲和保存數據的。它在任何時候都可以讀寫,RAM通常是作為操作系統或其他正在運行程序的臨時存儲介質(可稱作系統內存)。
不過,當電源關閉時RAM不能保留數據,如果需要保存數據,就必須把它們寫入到一個長期的存儲器中(例如硬碟)。正因為如此,有時也將RAM稱作「可變存儲器」。RAM內存可以進一步分為靜態RAM(SRAM)和動態內存(DRAM)兩大類。DRAM由於具有較低的單位容量價格,所以被大量的採用作為系統的主記憶。
RAM和ROM相比,兩者的最大區別是RAM在斷電以後保存在上面的數據會自動消失,而ROM就不會。4~8M的RAM對於一般應用程序的運行已經足夠,如果追求多媒體功能,64M的RAM容量也只能夠算是基本要求。
ROM(Read Only Memory)的全名為唯讀記憶體,它相當於PC機上的硬碟,用來存儲和保存數據。ROM數據不能隨意更新,但是在任何時候都可以讀取。即使是斷電,ROM也能夠保留數據。但是資料一但寫入後只能用特殊方法或根本無法更改,因此ROM常在嵌入式系統中擔任存放作業系統的用途。現在市面上主流的PDA的ROM大小是64MB以及128MB。
RAM和ROM相比,兩者的最大區別是RAM在斷電以後保存在上面的數據會自動消失,而ROM就不會。
電子計算機系統包括什麼?
計算機系統是能按照人的要求接受和存儲信息,自動進行數據處理和計算,並輸出結果信息的機器系統。計算機系統由兩大部分組成:硬體(子)系統和軟體(子)系統,其中硬體子系統是系統賴以工作的實體,它是有關的各種物理部件的有機的結合。軟體子系統由各種程序以及程序所處理的數據組成,這些程序的主要作用是協調各個硬體部件,使整個計算機系統能夠按照指定的要求進行工作。
硬體子系統包括中央處理器、主存存儲器、輸人輸出控制系統和各種外圍設備。
軟體子系統包括 系統軟體 、支援軟體 、應用軟體 三個部分。
計算機軟體(Computer Software,也稱軟體,軟體)是指計算機系統中的程序及其文檔。程序是計算任務的處理對象和處理規則的描述;文檔是為了便於了解程序所需的闡明性資料。程序必須裝入機器內部才能工作,文檔一般是給人看的,不一定裝入機器。
軟體是用戶與硬體之間的介面界面。用戶主要是通過軟體與計算機進行交流。軟體是計算機系統設計的重要依據。為了方便用戶,為了使計算機系統具有較高的總體效用,在設計計算機系統時,必須通盤考慮軟體與硬體的結合,以及用戶的要求和軟體的要求。
軟體(中國大陸及香港用語,台灣作軟體)是一系列按照特定順序組織的計算機數據和指令的集合。一般來講軟體被劃分為系統軟體、應用軟體和介於這兩者之間的中間件。其中系統軟體為計算機使用提供最基本的功能,但是並不針對某一特定應用領域。而應用軟體則恰好相反,不同的應用軟體根據用戶和所服務的領域提供不同的功能。
軟體並不只是包括可以在計算機上運行的程序,與這些程序相關的文件一般也被認為是軟體的一部分。簡單的說軟體就是程序加文檔的集合體。
軟體被應用於世界的各個領域,對人們的生活和工作都產生了深遠的影響。
軟體的正確含義應該是:
(1)運行時,能夠提供所要求功能和性能的指令或計算機程序集合。
(2)程序能夠滿意地處理信息的數據結構。
(3)描述程序功能需求以及程序如何操作和使用所要求的文檔。
軟體具有與硬體不同的特點:
(1)表現形式不同
硬體有形,有色,有味,看得見,摸得著,聞得到。而軟體無形,無色,無味,看不見,摸不著,聞不到。軟體大多存在人們的腦袋裡或紙面上,它的正確與否,是好是壞,一直要到程序在機器上運行才能知道。這就給設計、生產和管理帶來許多困難。
(2)生產方式不同
軟體是開發,是人的智力的高度發揮,不是傳統意義上的硬體製造。盡管軟體開發與硬體製造之間有許多共同點,但這兩種活動是根本不同的。
(3)要求不同
硬體產品允許有誤差,而軟體產品卻不允許有誤差。
(4)維護不同
硬體是要用舊用壞的,在理論上,軟體是不會用舊用壞的,但在實際上,軟體也會變舊變壞。因為在軟體的整個生存期中,一直處於改變(維護)狀態。
系統軟體
系統軟體是負責管理計算機系統中各種獨立的硬體,使得它們可以協調工作。系統軟體使得計算機使用者和其他軟體將計算機當作一個整體而不需要顧及到底層每個硬體是如何工作的。
一般來講,系統軟體包括操作系統和一系列基本的工具(比如編譯器,資料庫管理,存儲器格式化,文件系統管理,用戶身份驗證,驅動管理,網路連接等方面的工具)。
應用軟體
應用軟體是為了某種特定的用途而被開發的軟體。它可以是一個特定的程序,比如一個圖像瀏覽器。也可以是一組功能聯系緊密,可以互相協作的程序的集合,比如微軟的Office軟體。也可以是一個由眾多獨立程序組成的龐大的軟體系統,比如資料庫管理系統
較常見的有:
文字處理軟體 如WPS、Word等
信息管理軟體
輔助設計軟體 如AutoCAD
實時控制軟體
教育與娛樂軟體
按操作系統分類
BeOS
DOS
Linux
Mac OS
Unix
Windows
軟體開發
軟體開發是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉,需求分析,設計,實現和測試的系統工程。
軟體一般是用某種程序設計語言來實現的。通常採用軟體開發工具可以進行開發
軟體許可
不同的軟體一般都有對應的軟體許可,軟體的使用者必須在同意所使用軟體的許可證的情況下采能夠合法的使用軟體。從另一方面來講,某種特定軟體的許可條款也不能夠與法律相抵觸。
未經軟體版權所有者許可的軟體拷貝將會引發法律問題,一般來講,購買和使用這些盜版軟體也是違法的。
二進制與十進制如何轉換
1、常用進位計數制
(1)十進制
數碼:0、1、…… 8、9
基數:10
位權: 10i (i=……-2,-1,0,1,2,……)
逢10進1
(2)二進制
數碼:0、1
基數:2
位權: 2i (i=……-2,-1,0,1,2,……)
計算機語言包括哪些?各自特點是什麼?
雖說C語言在內存管理方面存在嚴重的缺陷,不過它還是在某些應用領域里稱王稱霸。對於那些要求最高的效率,良好的實時性,或者與操作系統內核緊密關聯的程序來說,C仍然是很好的選擇。
C良好的可移植性也為它加了分。不過現在很多其他的語言可移植性越來越好,C在這方面的優勢可能會逐漸喪失。
現有的很多程序可以產生非常棒的C代碼,比如語法分析器、GUI Builder等,這時候C語言也是有吸引力的,因為你所需要編寫的代碼只是整個程序的一小部分。
再有,我們當然應該認識道,C語言對於程序員來說具有無可替代的價值。就我這里討論的每一種語言而論,只要你發掘的足夠深,到最後你會看到它們的內核都是用純正的、可移植的C寫成的。
到了今天這個時候,我們最好把C看成是UNIX虛擬機上的高級匯編語言。
就算是其他的高級語言完全可以滿足你的工作需要,抽出時間來學習C語言也仍然有益,它能幫助你在硬體體系的層次上思考問題。
即使到了今天,最好的C語言教程仍然是1988年出版的K&R第二版The C Programming Language.
總結:C最出色的地方在於其高效和貼近機器,最糟糕的地方在它的內存管理地獄。
C++
C++最初發布於1980年代中期,當時面向對象語言被認為是解決軟體復雜性問題的銀彈。C++的面向對象特性看相去使其全面超越了C,支持者認為C++將迅速把上一代語言擠到陳列館里去。
但是歷史並非如此。究其原因,至少有一部分歸咎於C++本身。為了與C兼容,C++被迫作出了很多重大的設計妥協,結果導致語言過分華麗,過分復雜。為了與C兼容,C++並沒有採用自動內存管理的策略,從而喪失了修正C最嚴重問題的機會。
另外一部分原因,恐怕要算到面向對象身上。看起來OO並沒有很好的達成人們當年的預期。我就這個問題調研過,我發現使用OO方法導致組件之間出現很厚的粘合層,並且帶來了嚴重的可維護性問題。今天讓我們來看看開放源碼社區,你會發現C++的應用還是集中在GUI,游戲和多媒體工具包這些方面,在其他地方很少用到。要知道,面向對象也只是在這些領域被證明非常成功,而開放源碼社區的選擇,很大程度上體現了程序員的自由意志,而不是公司管理層的胡亂指揮。
也許C++實現OO的方法有問題。有證據表明C++程序在整個生命周期的開銷高於相應的C, Fortran和Ada程序。不過,究竟這是否應該歸咎與C++的OO實現上,還不清楚。
最近幾年,C++加入了很多非OO的思想,其異常思想類似Lisp,STL的出現是非常了不起的。
其實C++最根本的問題在於,它基本上只不過是另一種傳統的語言。STL中的內存管理比先前的new/delete和C的方案要好的多,但是還是沒有解決問題。對於很多應用程序而言,其OO特性並不明顯,相比與C,除了增加復雜度之外沒有獲得很多好處。
總結:C++優點在於作為編譯型語言,把效率與泛型和面向對象特性結合起來,其缺點在於過於華麗復雜,傾向於鼓勵程過分復雜的設計。
Java
Java的設計很聰明,它採用了自動內存管理,這是最大的改進,支持OO設計帶來的好處雖然不那麼突出,不過也很值得贊賞,相比C++,其OO設計規模小而且簡單 。
相對於Python而言,Java有一些明顯的失誤。有些地方設計的還是太復雜,甚至有缺陷。Java的類可見性和隱式scoping規則太復雜了。Interface機制是為了避免多繼承帶來的問題而設計的,但是要理解和使用它還是挺難。內部類和匿名類導致令人困惑的代碼。缺乏有效的析構機制,使得除了內存之外的其他資源(比如互斥量和鎖)管理起來很困難。Java的線程不可靠,其I/O機制很強大,但是讀取一個文本文件卻非常繁瑣。
Java沒有管理庫版本的機制,從而形式上重蹈了了Windows DLL地獄的覆轍。在類似應用伺服器這樣的環境里,這引起了大量的問題。
總體而言,我們可以說除了系統編程和對效率要求極高的程序之外,Java在大部分領域優於C++。經驗表明,Java程序員似乎不太容易象C++程序員那樣構造過度的OO層,不過在Java中這仍然是個嚴重問題。
Java是否優於諸如Perl, Python這樣的語言?我們還不是很清楚,很大程度上似乎跟程序規模有關。其擅長的領域基本上於Python相似,在效率上無法跟C/C++相提並論,在小規模的、大量使用模式匹配和編輯的項目里也無法匹敵Perl。在小項目里,Java顯得過分強大了。我們猜測Python更適合小項目,而Java適合大項目,不過這一點並沒有得到有力的證明。
Python
Python是一種腳本語言,可以與C緊密整合。它可以與動態載入的C庫模塊交換數據,也可以作為內嵌腳本語言而從C中調用。其語法類似C和模塊化語言的雜合,不過有一個獨一無二的特徵,就是以縮進來確定語句塊。
Python語言非常干凈,設計優雅,具有出色的模塊化特性。它提供了面向對象能力,但不強迫用戶進行面向對象設計。其類型系統提供了強大的表達能力,類似Perl,具有匿名lambda表達式,這點又讓Lisp黑客們感到親切。Python依靠Tk提供方便的GUI界面開發能力。
在所有的解釋型語言里,Python和Java最適合多名程序員以漸進方式協同開發大型項目。在很多方面,Python比Java要簡單,它非常適合與構造快速原型,這一點使得它對於Java有獨特優勢:對於那些既不很復雜,又不要求高效率的程序,Python十分合適。
Python的速度沒法跟C/C++相比,不過在今天的高速CPU上,合理地使用混合語言編程策略使得Python的上述弱點被有效地彌補。事實上,Python幾乎被認為是主流腳本語言中最慢的一個,因為它提供了動態多態性。在大量使用正則表達式的小型項目,它遜於Perl。對於微型項目而言,shell和Tcl可能更好,Python顯得太過強大了。
總結:Python最出色的地方在於,它鼓勵清晰易讀的代碼,特別適合以漸進開發的方式構造大項目。其缺陷在於效率不高,太慢,不但跟編譯語言相比慢,就是跟其他腳本語言相比也顯得慢。