本文目錄一覽:
計算機二級考試中C語言有什麼用?
1、操作系統
C語言最著名的應用領域就是操作系統了,目前所有的操作系統內核都是C語言寫的,最著名的就是Unix和Linux了。
2、單片機
由於C語言在位操作上的優越性,在單片機領域,C語言也一直獨領風騷,雖然現在出現了一些用其他編程語言操作單片機的方法,但也都是用C語言封裝過的,可以說核心還是C語言。
3、驅動程序
無論是操作系統或者單片機,對硬件的驅動除了彙編(比較繁瑣),都是用C語言來編寫。
4、編譯器或解釋器
由於C語言效率高的特點,很多編譯器也選擇的使用C語言來開發。
5、系統服務
由於操作系統都提供了C語言的API,並且C語言的執行效率比較高,所以用C語言來寫系統服務是最適合不過的。
6、應用軟件
由於C語言沒有成熟的開發框架,所以不適合開發大型應用程序。但也有一些對效率要求比較高的程序使用C語言開發,如Git。
Git是什麼?
Git是什麼?
Git是目前世界上最先進的分佈式版本控制系統(沒有之一)。
Git有什麼特點?簡單來說就是:高端大氣上檔次!
那什麼是版本控制系統?
如果你用Microsoft Word寫過長篇大論,那你一定有這樣的經歷:
想刪除一個段落,又怕將來想恢復找不回來怎麼辦?有辦法,先把當前文件「另存為……」一個新的Word文件,再接着改,改到一定程度,再「另存為……」一個新文件,這樣一直改下去,最後你的Word文檔變成了這樣:
過了一周,你想找回被刪除的文字,但是已經記不清刪除前保存在哪個文件里了,只好一個一個文件去找,真麻煩。
看着一堆亂七八糟的文件,想保留最新的一個,然後把其他的刪掉,又怕哪天會用上,還不敢刪,真鬱悶。
更要命的是,有些部分需要你的財務同事幫助填寫,於是你把文件Copy到U盤裡給她(也可能通過Email發送一份給她),然後,你繼續修改Word文件。一天後,同事再把Word文件傳給你,此時,你必須想想,發給她之後到你收到她的文件期間,你作了哪些改動,得把你的改動和她的部分合併,真困難。
於是你想,如果有一個軟件,不但能自動幫我記錄每次文件的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的文件了,也不需要把文件傳來傳去。如果想查看某次改動,只需要在軟件里瞄一眼就可以,豈不是很方便?
這個軟件用起來就應該像這個樣子,能記錄每次文件的改動:
版本
用戶
說明
日期
1 張三 刪除了軟件服務條款5 7/12 10:38
2 張三 增加了License人數限制 7/12 18:09
3 李四 財務部門調整了合同金額 7/13 9:51
4 張三 延長了免費升級周期 7/14 15:17
這樣,你就結束了手動管理多個「版本」的史前時代,進入到版本控制的20世紀。
github windows 使用什麼語言開發的
Github在3月19號開放了新的項目展示頁面(Showcase),Showcase根據項目屬性來組織、定義一系列的開源項目列表,可以更清晰的發現你所需要的開源項目。在3月26日的Showcase中,Github放出了一個新的類目:支撐Github的開源技術,這裡列舉了Github所使用的一些主要的開源項目。
如下是這些開源項目的介紹:
linguist
語言識別庫,能夠自動根據項目的代碼來識別你所使用的語言。 在你的項目源代碼頁面,可以看到一個彩條,點開以後會顯示項目中的編程語言比例。linguist主要通過文件的後綴來識別,對於一些通用的擴展名,例如.m文件,linguist通過一些語言的特徵片段來做判斷。由於編程語言很多,linguist還不能覆蓋所有語言的檢測。
jquery-pjax
pjax是Github的聯合創始人之一defunkt的作品,它使用html的pushState特性與ajax,可以實現頁面內容動態局部刷新,當點擊項目源代碼頁面中具體的一個文件或者文件夾時,你將會看到頁面的其他部分是不變的,只有定義的頁面DOM會刷新,這裡使用的就是pjax。
elasticsearch
Eleasticsearch支撐了Github的搜索功能,2年之前Github使用Solor做搜索,隨着用戶和託管項目的增加,索引的大小超過了solor節點的最大存儲空間,也出現了很多的問題,Github團隊在思考解決方案時決定使用Elasticsearch做替換。Github最開始使用ES時,使用了44台亞馬遜EC2實例,每台實例配備2T的存儲,其中8台實例指負責查詢請求。目前,Github已經將原有的EC搜索集群遷移到了東海岸的一個數據中心,使用8台物理主機替換了44台EC2。
Rails
Ruby實現的MVC Web框架。Github的用戶界面和功能大部分基於Rails構建,不過需要注意的是現在雖然Rails的項目版本已經發展到了Rails 4,但是Github依舊使用的是自己維護的2.3分支,對於不保持和現有的Rails主版本號一致的原因,Github員工Kneath做了如下的解釋:
. 花更過的時間來升級更新Rails,將會減少為用戶構建新特性的時間,我們更關注用戶;
. 性能問題是一個很重要的考慮。在過去的幾年中,我們極大的減少了響應時間。而升級Rails不僅會帶來一個更慢的框架,而且還會引入一個不同的架構——我們需要再根據新的框架特性來定位優化性能。我們對於現有的框架已經做了很多的優化以保持性能穩定,最主要的是:將時間花費在升級上不會讓我們的架構更快。
. 過去的三年我們一直在升級這個堆棧,不升級Rails版本我們依然可以使用新的特性。
Redis
Redis是K/V存儲系統,知名的NoSQL實現之一,在Github,主要使用Redis來進行隊列中的異常處理。在Github早期,曾嘗試過很多的基於Ruby的隊列機制,也曾使用Amazon SQS,但是這些方案都不能在Github快速增長的同時滿足穩定性要求,最終Github遷移到了使用Redis的技術方案resque。
sprocket
Sprocket是一個網站資源打包的Ruby庫,它不僅能夠管理JavaScript和CSS資源,還可以按照pipline的方式來流式預處理CoffeeScript、Sass、SCSS和LESS代碼等;
libgit2
libgit2是一個可移植、純C語言實現的Git核心方法類庫,提供API重新鏈入Git方法。Github的背後使用的原生的git來實現commit、push等功能,但是使用libgit2來針對桌面應用調用、Ruby代碼中調用等;
rugged
libgit2的Ruby類庫;
bcrypt-ruby
OpenBSD bcypt()密碼哈希算法的Ruby實現;
html-pipeline
html-pipline是一個gem包,可以將現有Github前端HTML中的一些特性進行流式處理,例如在Github的評論框中,你可以@某一個人、輸入emoji的表情、使用markdown的語法來寫內容等,但是這些都是由單獨的插件來控制的,html-pipeline可以流式的使用相應的插件處理原始內容,例如先將markdown轉義成html,繼而自動添加emoji表情,然後進行代碼的語法高亮等。
gemoji
在2013年的QCon北京前夜:Github Drink Up活動中,來自Github的工程師Tim在現場的活動中談到了他們的一個文化:使用emoji。他解釋道:「很多情感使用文字不能做出形象的表達,但是使用emoji表情卻能夠起到不一樣的效果」。在Github現有評論框或其他內容中,都可以看到emoji的身影,所使用的就是gemoji這個gem包。
jekyll
Jekyll是一個靜態博客生成的程序,Github中項目的Page頁面,默認選型使用的就是jekyll。
gollum
Gollum是一套基於git的wiki系統,Github項目的wiki系統背後使用的就是這套開源框架;
octokit.rb
Github API的官方Ruby SDK;
Hubot
Hubot是Github自行開發的一個聊天機械人,當然它已經超過了聊天機械人的範疇,Github作為一個異步辦公的團隊,日常的協作、溝通很大部分依賴於聊天室,通過Hubot,Github的員工可以在聊天室中給機械人定製一些特定的回復、3D打印模型,甚至通過hubot來部署生成環境的代碼、獲取服務狀態等,在2013年的QCon北京中,Giuthub的工程曾針對如何使用Hubot做運維進行過分享:《ChatOps at GitHub》。
d3
d3是使用JavaScript實現的數據可視化框架,使用HTML、SVG和CSS等,在d3的基礎之上發展處諸如crossfilter、NVD3.js等一系列擴展或者簡化框架,並且形成了一個良好的社區。作者mbostock目前供職於NYTimes,d3是他的博士論文項目,目前Github使用d3來展示託管項目提交歷史、記錄等的可視化效果圖。
plax
plax是控制視差元素的JavaScript類庫,你可以在404、505等頁面看到它的實現效果。
ace
Ace是一個使用Javascript開發的代碼編輯器,具備語法高亮、快捷鍵綁定等特性, Github使用Ace實現基於web的代碼編輯功能。
zepto
Zepo是一個JavaScript框架,其特點是兼容現有jQuery API的同時,自身體積十分小;
zeroclipborad
Github的「點擊複製到粘貼板」的功能就是使用的zeroclipboard,zeroclipboard使用一個不可見的Adobe Flash動畫來實現複製粘貼,並提供Javascript的API接口以供調用。
charlock_holmes
charlock_holmes用來檢測字符編碼格式,並可以自動將字符編碼轉化成UTF-8。
puppet
服務器運維工具,可以進行自動化部署、集群管理等。
moment
moment是一個日期框架,用於解析、驗證、格式化日期等,其中一個常用的功能是將原始的Javascript時間類型轉化成方便閱讀的時間說明格式,例如:」2小時之前「、」3天之前「這種形式。
bower
前端資源包管理工具,可以通過bower install package的形式將常用的前端資源下載到本地的項目目錄中,例如:bower install bootstrap將會自動下載bootstrap的項目資源到本地的項目目錄中,不需要自己手動來下載、移動資源文件,並且通過配置文件可以方便分享給同事、簡化項目初始化等;
resque
Resque是Github Enterprise中使用的一個基於Redis的後台作業控制系統,提供可視化的界面,可以方便的監控後台作業的運行狀態和監控情況。
另外,Github還發佈了「支撐Github Windows客戶端的開源項目」和「支撐Github Mac客戶端的開源項目」兩個Showcase。
git是幹嘛的(在哪方面會用到)
git的最基本作用是版本控制,比如你寫一個文檔,老闆一直讓你改,這時笨的人會在原文檔上直接改,聰明一點的會複製一下原文檔,在副本上修改,這時老闆說你的第三版比較好,笨的人煞筆了。。,聰明一點的就直接拷貝了第三版給客戶發過去了。然後聰明一點的認為這次的事情完事了把其他沒用的都刪了,突然有一天老闆說客戶的意見和你最後一版的相同,這時聰明一點的人也煞筆了。。。。
來了個最聰明的人,會用git,他在本地建了一個版本庫,每次老闆讓他修改,他就把之前的版本提交一下,並標明這版的主要特點,這樣文件夾里就只有一個文檔,每次老闆說要那個版本的,他就直接從版本庫里恢復一下。
git通常在編程中會用到,通常是多個人同時協作一個項目,有可能出現兩個人同時修改一個文件,這時後提交的人會遇到衝突,需要解決衝突;git能夠記錄每個人的提交修改等形成日誌,可以根據提交記錄進行回滾;並且git支持分佈式部署。
純手打,
據說c語言不適合寫大程序,那什麼語言適合?
沒人說C不適合大程序.比如linux內核就是純C的,那可不是什麼小程序.
C不適合的地方只是開發成本和運行成本不匹配的情況下.比如一個程序只運行一次,而且對時間上沒有太多的要求,比如可以運行一周到一個月之間,用腳本可以在一周內開發完成並在一個月內運行完,就不要花一人月開發然後運行一周看到結果了. 非你要用很多人共用的大型計算設備.這時候才考慮機器的時間.通常人的時間比機器貴.
而且,足夠大的解決方案中,並不是限定一種編程語言的.核心的,而且要求高效的部分可能會用C/C++甚至手寫彙編來實現.外圍的部分多是用 java /C# /Ruby/Python 等等一些開發周期短的語言實現.
最後當然是考慮可行性了,比如你在一個沒有jvm clr等運行環境的平台上寫程序,當然首先是C C++ 和彙編了.如果你在一個有java 的解釋器的情況下,如果效率上能滿足,那就用java 做,如果只支用C就用C,主要的是看成本,學java也是一種成本.
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/152972.html