-
1 # 使用者59855945091
-
2 # 東渡科技
C語言是面向過程的程式語言,什麼是面向過程,網上的解釋是,“自頂向下順序執行,逐步求精;其程式結構是按功能劃分為若干個基本模組,這些模組形成一個樹狀結構;各模組之間的關係儘可能簡單,在功能上相對獨立;每一模組內部均是由順序、選擇和迴圈三種基本結構組成;其模組化實現的具體方法是使用子程式。程式流程在寫程式時就已決定。”
要怎麼理解,很簡單,就是任何事情的處理都是有一個流程的,什麼流程最容易就用什麼流程,那麼到底什麼流程最簡單,怎麼解決問題,就必須說到數學上的知識,程式設計前一半都會先建立數學模型,簡單點說就是演算法,也可以說成是資料結構,因此,用C語言程式設計,你必須掌握資料結構,理解數學模型,非常抽象和複雜。
再來看Java語言,Java是一門面向物件的語言,這個怎麼理解呢?簡單來說就是有很多處理流程已經打包成類庫,這個類庫就是物件,使用的時候只需要用特定的類來呼叫這個物件就行了。因此,相對來說,就少了很多資料結構的知識,當然這也限制了軟體的執行和效能,所以在軟體的效能上,Java語言是很難和C語言相比擬的。
從學習上來看,Java基本上是學會了語法和類庫的呼叫,基本就算入門了,而C語言不止如此,學會語法你還得會演算法,涉及的知識面C語言也遠比Java來的多,Java語言可以不用瞭解計算機底層的東西,但學習C語言你不能繞過這些計算機底層。
最早的Java語言核心就是用C語言編寫出來的,同C++一樣,都可以算是C語言的拓展,在開發易用上,很顯然面向過程的語言是比不上面向物件語言的。
-
3 # 該賬戶暱稱已被註冊
給你說一個以前我老師給我說的比喻吧,其實java像一把刀,C語言像一把劍。武俠小說中刀往往只有一個刃而劍是雙刃的。所以劍更需要技巧,更具有殺傷性,刀相比劍不怎麼需要技巧。具體來看:java是面向物件的程式語言,更貼近人的思維。C語言是面向過程的程式語言,用C語言程式設計,你必須掌握資料結構,理解數學模型,非常抽象和複雜。我不怎麼了解C,但是我聽說學過C的同學都說指標很痛苦。而java程式設計不存在指標。
-
4 # 等待著冬天的風
java語法相對比較簡單,更容易理解,還有個就是java封裝的庫很多很強大,有些都已經集合到jdk裡面了,但是同樣你也可以自己去封裝去實現,程式語言都差不多,關鍵的是要理解資料結構和演算法!
-
5 # CGlobal9910
先說說Java優點,Java隱藏了C的晦澀難懂的指標,記憶體管理等機制,把這些難懂且容易出錯的部分交由虛擬機器去處理,這是Java最方便之處。Java擁有強大的類庫,學語言可能要花費較多的時間學習別人建立並組織好的知識庫,Java奉行拿來主義,組裝主義,這使得開發效率大大提高,但有時拿來並不一定是好事情,你可能用到的只是某個類庫中一項簡單的功能,你卻不得不花費大量的精力弄懂這個類庫的框架和內部錯綜複雜的類關係,有時你會覺得開發者的思路晦澀難懂,等你真正學習並理解了開發者的意圖,估計你自己就能寫出功能相仿的類庫了,所以說,學Java難就難在學習類庫上。
再來拉拉C,一個很重要的問題,說C沒有封裝,沒有面向物件的同學們真的要好好學學程式設計基礎了。C的結構體就是C++和Java語言面向物件和封裝技術的始祖,在結構體裡面封裝變數指標和函式指標就是一個類。雖然C的指標和記憶體管理很難學,但是這確實是程式設計基礎,還有編譯,連結,動態裝載,虛擬記憶體,作業系統,資料結構等等,這些基礎都要學,還都要學好,可恰恰很多人學不好,這就不難理解三十歲就失業的程式設計師大有人在了。Java雖然不提指標,但是卻處處都用指標,從普通變數的宣告,到類物件的構造,以及函式引數的傳遞都是指標。每次說到這,我都真心地佩服能寫出JVM的程式設計師們,在程式和作業系統核心之間多構架出這麼一個虛擬層,提供自動指標和記憶體管理機制,又能提供即時編譯,並重便捷和效率,JVM絕對堪稱程式設計世界的一個偉大發明。
說到JVM虛擬機器,又得說回編譯器,不管什麼語言開發的程式,最終要被編譯連結成機器能識別二進位制機器語言。對於Windows或Linux平臺上開發的程式來講,不管是C的編譯器還是Java的虛擬機器,其整個編譯連結和記憶體裝載的過程,以及虛擬記憶體的管理,多執行緒的實現,都要受作業系統監管,對作業系統核心的瞭解程度,決定了程式開發的深度。Windows和Linux的系統呼叫層介面千差萬別,C設計者艱難的制定了能適用兩種介面的標準庫,但是涉及到圖形、多執行緒等深度開發,標準庫的能力就顯得捉襟見肘了,還需要各自平臺的專業庫,這樣開發出來的程式受作業系統平臺限制。為了實現程式語言跨平臺的機制,JVM出現了,但是虛擬機器的本質還是在不同平臺的系統呼叫層之上的標準介面,所以涉及到硬體驅動和系統核心關聯開發時就無能為力了,當然JVM也允許程式中呼叫本地C函式庫,做到多語言聯合開發,以達到底層開發的目的。
說了這麼多,也說的很亂,總體上的意思是說,用便捷的Java語言開發程式絕對沒有問題,但一定要學習掌握程式設計的基礎,知道程式執行的來龍去脈,這樣遇到深層次的問題時,就有能力解決,這也是高階程式設計師的必經之路吧。
-
6 # 魂不散
曾經C語言相對彙編也“簡單”過,所以說java比c簡單也只是語言層面的比較。
java的確在語言上解放了程式設計師一些複雜的事,比如記憶體管理,作用域,庫依賴等等。但從語言的應用上簡單易用程度是一樣的,各有千秋,像現在java各種框架絕對是最複雜的。
結論就是各語言學習曲線不同,但最終殊途同歸。
-
7 # 糖果爸教電腦
我按照自己的理解給一個不需要程式知識也可以看懂的解釋。
把寫程式比喻為一個人要打官司,用C語言相當於自己去學法律條文,為自己辯護,而用Java相當於請了一個大狀。
把大象放進冰箱,C提供的是三個方法,開冰箱,放大象,關冰箱,而Java提供的是一個方法,就是把大象放進冰箱。
另外,相比來說,Java使用起來簡單,特別是不用自己管理記憶體。在硬體發展到今天的程度,浪費一點硬體資源給Java虛擬機器去管理記憶體,換來的是價效比。更快的開發速度,更少的記憶體問題,代價是更好的硬體配置。
但C的地位是無法撼動的,底層開發的優勢很明顯。C是基礎語言,是道里的太極(原諒我忽略了打孔和彙編,因為相對用的少)。
最後總結一下,之所以現在感覺Java盛行,只是大家接觸的都是網際網路程式,底層開發我們不關注而已。
-
8 # 鈦度派索
c是更接近機器語言的低階語言,它具備更高的執行效率,但是相對易讀性比較低。而Java屬於高階語言範疇,它更易於人類理解,但是同樣在機器(計算機)上執行效率相對低。你懂英文基本就可以讀懂Java,但是c有很多你讀不懂的程式碼。易用則是因為Java有大量外掛和庫可以引用,c有看引用的外部庫但是相對少。
-
9 # Andilyliao
語言沒什麼簡單容易的 c之所以難是因為天生需要學好系統原理 而java做好了也同樣需要學好jvm 只不過對於做不好的小白來說java容易上手而已 什麼做好了都不容易 什麼做成hello world也都不難
-
10 # 吃瓜群眾來了前排讓讓
java很多函式都封裝好了,要用直接呼叫就夠了,C還要自己寫,而且c裡的指標讓初學者很頭疼,而且有個重要原因就是一般學校都是先學c再學java,有了c的基礎學java當然簡單了,要是反過來大家又會覺得c簡單,萬事開頭難嘛
-
11 # 玩著學程式設計
Java是面向物件程式設計的,更符合人們的邏輯思維習慣,也更容易理解一下,一切皆物件
在現實生活中,用Java開發出來的,像各種網站,APP,咱們接觸的也比較多
以前學習Java的時候,看的是如鵬網的影片教程——《這樣學Java不枯燥》,透過開發超級瑪麗,飛機大戰等好多經典的小遊戲來講解Java的知識點,講的挺好的,通俗易懂,不枯燥,學起來特別的有成就感
-
12 # 我低端就改我名
C語言是系統相關的,你寫C語言之前,必須要搞清楚為什麼體系的cpu編寫程式碼,挑選合適的編譯器;在目標系統上都有哪些可用的裝置和庫,庫的版本,謹慎選擇要呼叫的標頭檔案。編寫時每一個申請記憶體的操作,都必須跟一個釋放操作,否則就會記憶體洩露,導致執行一段時間後崩潰。指標,或者陣列下標做運算要特別小心,否則就是崩潰。C語言程式設計三大坎:透過編譯,啟動不崩潰,執行不崩潰。你要是能開gdb除錯自己的程式,就算進入中級了。
java以上說的問題都不存在,你說哪個簡單?
回覆列表
C語言簡單,有的人說JAVA簡單,我不太贊成。我曾以為我對JAVA瞭解的已經差不多了,但自從看了JAVA程式語言/核心技術,我才發現自己懂的僅僅的“語法”而已。所以,不要以為懂了“語法”,就懂了一門語言。曾有人說“JAVA=C++--”,這句話意思就是,對C++進行了一些取長補短,而C++又提取自C語言,說到底,C語言是基礎中的基礎,你要走向成功,更強大,就要從底層學起。好比學英語,你是覺得“英語聊天”簡單,還是“說單詞”簡單?你要是覺得單詞簡單,就先學C語言。你要是覺得“英語聊天”簡單,就學JAVA。當然,你直接學JAVA也“不會影響”你將來的發展。別人來到我們中國,不一定要了解歷史才能生存吧?