c語言的形成
⑴ c語言什麼時候誕生
1969-1973年在美國電話電報公司(AT&T)貝爾實驗室開始了C語言的最初研發。根據C語言的發明者丹尼斯·里奇 (Dennis Ritchie) 說,C 語言最重要的研發時期是在1972年。
C語言之所以命名為C,是因為C語言源自Ken Thompson發明的 B語言,而B語言則源自BCPL語言。
C語言的誕生是和UNIX操作系統的開發密不可分的,原先的UNIX操作系統都是用匯編語言寫的,1973年UNIX操作系統的核心用C語言改寫,從此以後,C語言成為編寫操作系統的主要語言。
⑵ c語言什麼時候誕生的
1972年。
C 語言里的 時間/日期 計算 起點,有個 unix timestamp(unix 時間圖章)是 Jan 1, 1970 UTC。所以 c 語言發明時間,應當是 1970年1月1日以後。
1969-1973年在美國電話電報公司(AT&T)貝爾實驗室開始了C語言的最初研發。根據C語言的發明者丹尼斯·里奇 (Dennis Ritchie) 說,C 語言最重要的研發時期是在1972年。
細節: 最初的Unix是用匯編語言編寫的,一些應用是由叫做B語言的解釋型語言和匯編語言混合編寫的,在移植的過程中遇到不少麻煩。早在對Multics項目調整過程中,就迫切需要一門高級計算機語言做工具,為了解決程序的可移植性問題,肯·湯普遜和丹尼斯·里奇決定對它進行簡單改進,形成 「New B」 語言。但 New B 在Unix的移植方面依然不盡人意,此後里奇又對 New B 語言做了改進,C語言誕生。
⑶ C語言的發展及其特點
個人覺得是很好的一篇文字,說得很清楚:
C是一個結構化語言,如譚老爺子所說:它的重點在於演算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制),而對於C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。
所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程序設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,「C加上好的設計」也能寫出非常好的東西。
對語言本身而言,C是C++的子集,那麼是什麼樣的一個子集?從上文可以看出, C實現了C++中過程化控制及其它相關功能,而在C++中的C(我稱它為「C+」),相對於原來的C還有所加強,引入了重載、內聯函數、異常處理等等玩藝兒,C++更是拓展了面向對象設計的內容,如類、繼承、虛函數、模板和包容器類等等。
再提高一點,在C++中,數據封裝、類型這些東東已不是什麼新鮮事了,需要考慮的是諸如:對象粒度的選擇、對象介面的設計和繼承、組合與繼承的使用等等問題。
所以相對於C,C++包含了更豐富的「設計」的概念,但C是C++的一個自洽子集,也具有強大的功能,同樣值得學習。
幾點學習建議:
1.基本概念很重要。無論學C,還是學C++,基本概念都是第一位的,也是比較困難的,但只有把握了基本概念才能把握整體脈絡,才能居高臨下。
2.C是C++的子集,它的基本概念和設計方法相對比較容易理解,初學者可從它入手。
3.如果要學好C++,建議初學者最好別在如VC,BCB平台下寫程序,那種自動化的代碼生成,花花綠綠的界面,會讓你手足無措。最好先找一片空地(unix,dos),從頭做起,寫幾個大點的程序,數個回合,再到VC,BCB下看看,你會輕松得很。在我看來,學好C/C++是成為VC,BCB高手的必由之路。
4.不要妄想速成,必須得一個byte,一個bit的去摳,盡量搞清楚每一個問題。
5.幾本好書:
機械工業出版社的那套「計算機科學叢書」從C到C++,到面向對象設計,一應俱全,都TMD是經典中的經典,而且價格公道,童叟無欺。
國內也有幾本好書,譚老爺子的書好倒是好,就是程序錯誤太多。強烈推薦清華周之英的《現代軟體工程》(上、中、下),它是我所見到的國內少有的一本好書,精華的精華,要點的要點,細細品來,至少也屬降龍十八掌等級的東東。
如果還是有人想學習C/C++的話, 有一些小問題我還是樂意解答的. 但是我認為學習C/C++是不重要的, 重要的是如何鍛煉你的思路. 不要找一些連自己都搞不清的問題去做.
我認為雖然 "潭浩強" 同志有騙錢的嫌疑( 我手頭就有一本幾乎一模一樣的英文書 ), 但是, 是他把這本入門手冊引入中國, 使無數程序員了解了C語言, 我想他的功勞也是不可磨滅的. 在< C語言程序設計 >這本書中所有的例子都可以用做鍛煉思路的基石, 他對大家的編程是很有幫助的. 我認為是值得一買的. 去思考課後的例子對你的編程很有幫助. 不要小看一個一個簡單的例子, 他們是你通往成功的道路.
當你基本能夠掌握了上一本書中例子後, 你就要自己找一些例子程序去看. 開始可能是看不懂, 但是只要努力就沒有什麼問題. 當你看過幾個較大的例子之後, 你會茅塞頓開, ( 大量閱讀例子程序是學習C/C++的捷徑 ). 你會發現, 你的水平有了顯著的提高. 你看的例子越多, 你對 Windows/DOS 了解的越多. 最好能夠再看一些關於系統知識的書籍. 他會對你的編程很有幫助的.
這是我學習C/C++的一點心得, 希望對沒有被我嚇到而要繼續學習C/C++的朋友們有一些幫助. 免得有些同志說我破壞中國軟體人才的發展.
在最後我祝願所有堅持學習C/C++的朋友們成功! 同時感謝閱讀過我文章的同志們.
想學好C++,非學C不可!!!
今天我這么肯定的在這里講這番話,是不想初學者陷入到語言越新越好的誤區,本來這個題目就不是很嚴謹,但是我有幾句話必須講講,為C平反!!
C++與C有什麼不同呢?我們現在一步步地來分析一下
一、類,類我並不說它有什麼不好,但是對於初學者,它是一個累贅。類的封裝使得初學者對程序產生厭倦,感到不適和麻煩。
二、引用,引用是C++中最臭屁的東西了,最好盡量不要用它,我就是從來不用引用,除非萬不得已。引用對於初學者就更容易產生混淆,不知道哪個是引用,哪個是變數。
三、函數的重載,初學者學函數的重載好像沒什麼壞處,但是,這會使初學者潛意識里對C語言的變數類型的重要性產生淡化,要記住C語言是對變數類型最敏感了的,變數的類型在C語言里的重要性是不言而喻的。
四、流操作符,和上面同樣的道理,使得對變數類型的重要性產生淡化,況且,cin這個東東有點兒不怎麼方便,有時會產生使初學者莫名其妙的結果。
五、操作符重載,典型的高級應用,初學者可能根本用不著,這個東東會讓他們覺得C++很難,門檻高,看不懂…………。
六、繼承,以及虛函數,典型的模仿四不象,這種狗屁東西除了看起來深奧,實用價值很低………………。我怎麼可能把某個類的類型的指針去指向另一個不同類型但是是繼承關系的類,來實現什麼動態聯編,暈…………
………………還有些東東我就不發表評論了,如:new,delete操作符等…………
七、誤區:以問答形式:
問:C++是面向對象化的而C是面向過程化的?
答:第二對,第一問錯,C++並非完全面向對象化,真正的面向對象化的語言恐怕只有Java才算得上。
問:C++能實現C所不能的功能嗎?
答:至少我還沒有發現……
問:學了C再學C++有障礙嗎?比如程序設計思想……
答:至少我還沒有看見誰有此症狀。
問:學了C再學C++又要重頭開始嗎?
答:不,C++下可以實現C語言的一切功能。
問:我學完了C一定還要學C++才能編程嗎?
答:完全沒必要。
問:C++比C好在哪裡?
答:更加符合軟體工程學
問:學完了C再學C++是不是很容易?
答:那要看你是不是真正的學完了C語言,我從C到C++就一個星期的睡覺前的時間看兩眼書,然後就大徹大悟。再跑到這里來發表些狗屁文章了。
最近在網上看到了很多人的學習方法,本人非常不贊同。很多人都想一口吃個胖子,要學就想學最新的,好象沒有人願意再去學那些老的,舊的編程語言了。但你們能學的懂嗎?不學TC2。0等那些較早的優秀編程語言,你們能理解的了VC6。0?如果你真的能,我寧願做你的徒弟!真是奇怪,那些最基本的語言都不懂的人,怎麼可能去理解那些最新的編程語言?我學編程有三年了吧。成績也不算多,只有一個計算機四級證和一個高程證,但我覺得我在學VC的時候還有很多的不明白的地方。沒有人來教我,只能靠我自己,包括所有的成績在內,我都是靠自己,我從不報班。學VC的半年多來,我想我已經基本入門,但依然有很多的困惑。剛開始學VC,就面臨一個項目,我真的猶如笨蛋一般,四處嚇摸,毫無頭緒,最後勉勉強強才算做個差不多。學好VC再去學其他的高級WINDOWS編程,我想那真是輕而易舉,畢竟WINDOWS的內部的很多東西都能直接被VC調用,你首先就可以對WINDOWS有個全新的認識,再去學其他的語言豈能不簡單?
我的感覺是,面向過程和面向對象,其實都很重要的,在VC里也依然需要面向過程,很多東西都是一環扣一環,沒有面向過程的思想,怎麼可能去編程呢?建議多去看看有關WINDOWS編程的書,但多數都是比較老的書呦!我依然記得當年整天進行TC編程的辛苦,但我依然很懷念當年的勞動付出,畢竟我獲得了我想獲得的一切——編程思想。我覺得一個好的編程思想,絕對比你去學一門計算機語言好重要的多。要形成自己的編程風格。一個好的編程思想在你的頭腦中一旦形成,學習什麼語言都會很輕而易舉,因為此時的你不在是簡簡單單的學習,而是來驗證!
參考資料:
C語言是結構化和模塊化的語言,它是面向過程的。在處理較小規模的程序時,程序員用C語言較得心應手。但是當問題比較復雜,程序的規模比較大時,結構化程序設計方法就顯出它的不足。C程序的設計者必須細致的設計程序中的每一個細節,准確地考慮到程序運行時每一時刻發生的事情,例如各個變數的值是如何變化的,什麼時候應該進行哪些輸入,在屏幕上應該輸出什麼等。這對程序員的要求是比較高的,如果面對的是一個復雜問題,程序員往往感到力不從心。當初提出結構化程序設計方法的目的是解決軟體設計危機,但是這個目標並未完全實現。為了解決軟體設計危機,在20世紀80年代提出了面向對象的程序設計(Object-Oriented programming),在這種形勢下,C++應運而生。
C++與C完全兼容,是C的超集。它既可用於結構化程序設計又可用於面向對象的程序設計,因此它是一個功能強大的混合型的程序設計語言。
增強主要表現在兩個方面:
1 在原來面向過程的機制基礎上,對C語言的功能作了不少擴充。
2 增加了面向對象的機制。
⑷ 計算機c語言發展歷程
C語言是在70年代初問世的,一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的<>一書,通常簡稱為《K&R》,也有人稱之為《K&R》標准。但是,在《K&R》中並沒有定義一個完整的標准C語言,後來由美國國家標准學會在此基礎上制定了一個C
語言標准,於一九八三年發表,通常稱之為ANSI
C。當代最優秀的程序設計語,早期的C語言主要是用於UNIX系統。由於C語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,C開始進入其它操作系統,並很快在各類大、中、小和微型計算機上得到了廣泛的使用,成為當代最優秀的程序設計語言之一。C語言是一種結構化語言,一般不具備邏輯關系。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。C語言的表現能力和處理能力極強,它不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構;而且它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由於C語言實現了對硬體的編程操作,因此C語言集高級語言和低級語言的功能於一體。既可用於系統軟體的開發,也適合於應用軟體的開發。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。
⑸ C語言是在什麼語言的基礎上發展起來的
C語言是在B語言的基礎上發展起來的,它的根源可以追溯到ALGOL 60。 1960年出現的ALGOL 60是一種面向問題的高級語言,它離硬體比較遠,不宜用來編寫系統程序。1963年英國的劍橋大學推出了CPL(CombinedProgram- ming Language)語言。CPL語言在ALGOL 60的基礎上接近了硬體一些,但規模比較大,難以實現。1967年英國劍橋大學的Matin Richards對 CPL語言作了簡化,推出了BCPL(Basic Combined Programming Language)語言。1970年美國貝爾實驗室的 Ken Thompson以 BCPL語言為基礎,又作了進一步簡化,設計出了很簡單的而且很接近硬體的 B語言( 取 BCPL的第一個字母),並用 B語言寫第一個UNIX操作系統,在PDP-7上實現。 1971年在PDP-11/20上實現了B語言,並寫了UNIX操作系統。但B語言過於簡單,功能有限。1972年至 1973年間,貝爾實驗室的 D.M.Ritchie在B語言的基礎上設計出了C語言(取 BCPL的第二個字母)。C語言既保持了BCPL和B語言的優點(精練、接近硬體),又克服了它們的缺點(過於簡單、數據無類型等)。 最初的C語言只是為描述和實現UNIX操作系統提供一種工作語言而設計的。1973年,K.Thom- pson和D.M.ritchie兩人合作把UNIX的90%以上用 C改寫(UNIX第5版。原來的 UNIX操作系統是1969年由美國的貝爾實驗室的 K.Thompson和D.M.Ritchie開發成功的,是用匯編語言寫的)。
⑹ c語言產生的歷史背景是怎樣的
C語言出現的歷史背景
C語言是國際上廣泛流行的計算機高級語言,既可用來寫系統軟體,也可用來寫應用軟體。 C語言是在B語言的基礎上發展起來的,它的根源可以追溯到ALGOL 60。1960年出現的ALGOL 60是一種面向問題的高級語言,它離硬體比較遠,不宜用來編寫系統程序。1963年英國的劍橋大學推出了CPL (combined programming language)語言。CPL語言在ALGOL 60的基礎上接近硬體一些,但規模比較大,難以實現。1967年英國劍橋大學的Matin Richards對CPL語言做了簡化,推出了BCPL (basic combined programming language) 語言。1970年美國貝爾實驗室的Ken Thompson 以BCPL語言為基礎, 又做了進一步簡化, 設計出了很簡單的而且很接近硬體的B語言 (取BCPL的第一個字母), 並用B語言寫了第一個UNIX操作系統,在PDP7上實現。1971年在PDP11/20上實現了B語言,並寫了UNIX操作系統。但B語言過於簡單,功能有限。 1972年至1973年間,貝爾實驗室的D.M.Ritchie 在B語言的基礎上設計出了C語言(取BCPL的第二個字母)。C語言既保持了BCPL和B語言的優點(精練,接近硬體),又克服了它們的缺點(過於簡單,數據無類型等)。最初的C語言只是為描述和實現UNIX操作系統提供一種工作語言而設計的。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版。原來的UNIX 操作系統是1969年由美國的貝爾實驗室的K.Thompson和D.M.Ritchie開發成功的,是用匯編語言寫的。 1972年至1973年間,貝爾實驗室的D.M.Ritchie 在B語言的基礎上設計出了C語言(取BCPL的第二個字母)。C語言既保持了BCPL和B語言的優點(精練,接近硬體),又克服了它們的缺點(過於簡單,數據無類型等)。最初的C語言只是為描述和實現UNIX操作系統提供一種工作語言而設計的。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版。原來的UNIX 操作系統是1969年由美國的貝爾實驗室的K.Thompson和D.M.Ritchie開發成功的,是用匯編語言寫的。
後來,C語言多次做了改進,但主要還是在貝爾實驗室內部使用。直到1975年UNIX第6版公布後,C語言的突出優點才引起人們的普遍注意。1977年出現了不依賴於具體機器的C語言編譯文本《可移植C語言編譯程序》,使C移植到其他機器時所需做的工作大大簡化了,這也推動了UNIX操作系統迅速地在各種機器上實現。例如VAX、 AT&T等計算機系統都相繼開發了UNIX。隨著UNIX的日益廣泛使用,C語言也迅速得到推廣。C語言和UNIX可以說是一對孿生兄弟,在發展過程中相輔相成。1978年以後,C語言已先後移植到大、中、小、微型機上,已獨立於UNIX和PDP了。現在C語言已風靡全世界,成為世界上應用最廣泛的幾種計算機語言之一。以1978年發表的UNIX第7版中的C編譯程序為基礎,Brian W.Kernighan和Dennis M.Ritchie (合稱K&R)合著了影響深遠的名著《The C Programming Language》,這本書中介紹的C語言成為後來廣泛使用的C語言版本的基礎,它被稱為標准C。1983年,美國國家標准化協會(ANSI)根據C語言問世以來各種版本對C的發展和擴充,制定了新的標准,稱為ANSI C。 ANSI C比原來的標准C有了很大的發展。K & R在1988年修改了他們的經典著作《The C Programming Language》,按照 ANSI C 標准重新寫了該書。1987年,ANSI又公布了新標准——87 ANSIC。
1990年,國際標准化組織ISO(International Standard Organization) 接受87 ANSI C為ISO C 的標准(ISO 9899—1990)。目前流行的C編譯系統都是以它為基礎的。本書的敘述基本上以ANSI C 為基礎。目前廣泛流行的各種版本C語言編譯系統雖然基本部分是相同的,但也有一些不同。在微型機上使用的有Microsoft C、 Turbo C、 Quick C、BORLAND C等,它們的不同版本又略有差異。因此,讀者應了解所用的計算機系統所配置的C編譯系統的特點和規定
⑺ c語言是幹嘛的
C語言是用來編寫系統的。
最開始,人們手裡除了機器碼就是匯編,沒有別的語言。但是匯編有很多硬體相關的特性,可移植性差。貝爾實驗室要解決這一問題,就研發了C語言。
C語言可以跨平台,一份代碼,配上不同的編譯器就可以在各大電腦上運行。除此之外,C語言效率驚人,在某些情況中,如果匯編水平中等以下,編出來的匯編甚至沒有C語言生成的機器碼快。
現在,NOIP(現更名為CSP-J和CSP-S)僅允許初賽和復賽使用三種語言:Pascal、C、C++,C語言的重要性不言而喻。
雖然邁入了互聯網時代,但是C語言的地位也沒有低到可以忽略。C語言在對空間和時間要求較高的設備(如嵌入式設備)中發揮著重要功能,也可以編寫各大語言的編譯器,有著比較重要的地位。
⑻ c語言是什麼
C語言誕生於20世紀70年代,比我們大多數人都大。當然,C語言並非沒有缺點,畢竟,是「70後的老人」,時代有點落後,開發效率低。接下來給大家講講C語言是什麼,希望對你們有幫助。
對於大多數程序員來說,C語言是學習編程的第一門語言,很少有不懂C語言的程序員。
C語言編程,除了讓你知道相關的概念,把你帶入編程的大門,還可以讓你了解這個項目運行的原理,例如,計算機的各個部分是如何交互的,程序在內存中是一種什麼樣的狀態,操作系統和用戶程序之間有著什麼樣的「愛與恨」,這些基礎知識決定了你的高度,也決定著你的職業生涯。
C語言概念少、詞彙少,並且包含基本的編程元素。許多後來的語言(C++、Java等)都參考了C語言。毫不誇張地說,C語言是現代編程語言的祖先,它改變了編程世界。
這是因為C語言簡單,對於初學者來說,學習成本小,時間短,結合教程,可以快速掌握編程技巧。
C語言還獲得過2017年「年度編程語言」的稱號,成為2017年全球增長最快的編程語言。
C語言誕生於20世紀70年代,比我們大多數人都大。當然,C語言並非沒有缺點,畢竟,是「70後的老人」,時代有點落後,開發效率低,後來人們在C語言的基礎上增加了面向對象機制,形成一種新的語言,稱為C++。
C語言是至今為止最為重要的編程語言:要進入編程行業高手級別必學C語言,要掙大錢必學C語言,要做黑客、紅客必學C語言,要面試名企、外企、高薪職位必學C語言。
C語言難不難?與Java、C++、Python、C#、JavaScript等高級編程語言相比,C語言涉及的編程概念較少,標准庫小,所以整體比較簡潔,容易學習,非常適合初學者。
⑼ C語言的優點及產生的影響有哪些
這幾年較為流行的C語言和C+、C++等語言,的確有其優於其他語言的特點。它們是一種介於高級語言和低級語言(匯編語言)中間的語言,集二者優點於一身,既能與匯編語言一樣對硬體功能進行訪問,也有高級語言所具有的面向用戶、可閱讀性強、書寫靈活、便於記憶等特點。因此C語言問世幾十年來,受到了各方面的歡迎,並被廣泛運用。盡管C語言還有一些缺點,並被認為很難學,但仍不失為一種優秀的語言。
值得一提的是,還有一種語言被稱作類PASCAL語言或偽C語言,這是用於C語言教學的一種特殊語言,但它教的只是設計方法,而不是編程,用它編制的程序是不可執行文件。