回覆列表
  • 1 # 測試軒

    簡單的反駁,就告訴他沒有的C哪來的python,現在主流的python還是CPython,底層是由C語言支援的。

    為什麼C語言不會過時

    對於所有程式語言追求的無非兩種,提高硬體到的執行效率和提高程式設計師的開發效率,魚與熊掌不可兼得,在提高執行效率這一方面是無可比擬的,他只關心程式是否執行的快不快,才不關心你程式設計師用的爽不爽,而其他程式語言都是在提高程式設計師的開發效率上下功夫。而且現在的作業系統核心都是C寫的,他就像是網際網路的基石,怎麼會過時.

    python為什麼會這麼流行

    因為python簡單易上手,而且有豐富的庫支援,用於廣,可用於爬蟲、服務端、人工智慧、資料分析、運維等,尤其在人工智慧上的應用,把它推向了高峰。

    總結

    C偏底層,所以學起來難度會很大,而python更高階,簡單容易上手,對於程式設計新手來說建議去學python,而且對於目前環境,需求也不少。

  • 2 # 鐵桿軍迷

    個人認為,這實際上反映了程式語言(教學)史上兩大學派--C和Lisp學派經久不息的爭論.

    C學派和Lisp學派分別代表了自底向上(from bottom to up)和自頂向下(from top to bottom)兩種教學方式."自底向上"派觀點認為,應當從計算機底層的知識開始教起,然後一步一步提高程式的抽象層次直至達到應用程式水平,所以在學習二進位制之前,應該先具有邏輯電路的相關知識;在編寫任何嚴肅的程式以前,必須先掌握記憶體架構和記憶體分配相關知識,是一個從具體到抽象的過程.而另外一派的觀點則截然相反:應當先教授抽象的程式,這些程式是用什麼語言寫的不重要,甚至這些程式只不過是虛擬碼,只能"在心靈中執行",程式的思想不依賴於我們有沒有計算機,然後在實現的過程中再教授具體的東西(譬如,如果我們要實現一個排序演算法,應該採用什麼資料結構,這些資料結構用C語言的結構體如何實現,記憶體如何管理等等),是一個從抽象到具體的過程(所以Lisp非常適合這一目的,因為Lisp本來可看做一種符號語言,在紙上也能執行演算).

    這兩種爭端在別的學科中也有,比如在數學中有布林巴基學派(對應著"自底向上").兩種方法各有優越性,最後也是殊途同歸:C學派最後也會教授程式抽象和結構化程式設計,而Lisp學派也會涉及到計算機底層的細節(譬如記憶體分配,大概會從垃圾回收器來入手,而不是從C學派所用策略).只不過就目前的趨勢來看,"自頂向下"一派似乎更有優勢一些.

    其實也沒什麼奇怪的,考慮到計算機的普及,越來越多非專業人士也有程式設計的需要,這些並不關心任何計算機實現的細節,他們僅僅希望將手頭的任務完成,他們需要一門程式語言來實現他們頭腦中的想法,程式語言抽象層次越高越好,因為這樣就越接近他們的想法,實現的難度也就下降.例如抽象資料結構(Abstract DataStructure),一個人只需要知道這個資料結構上的介面(例如Python的List可以append,extend等等),就可以使用這個結構,而無須擔心這個List到底在堆上還是在棧上,實現的時候是單鏈表還是連結串列加上陣列等等.

    注意,這並不是說(像這個回答下一些人表達的觀點),採用"自頂向下"方法的人,就比採用"自底向上"方法的人,要"低階"一些.只不過這些人不必做某事,不代表他們不能做某事.

    一個使用Python的人,一樣可以學習記憶體分配的相關知識(或者Java在這裡更加合適),只不過,他並不像在C語言中那樣要頻繁使用到這個記憶體分配的知識,因為垃圾回收使得手動記憶體分配這件事情變得沒有必要.這也不是說記憶體分配知識在動態語言中毫無必要,只不過在動態語言中,記憶體分配的相關知識的運用,並不在於進行手動分配這一點上,而在於如何與編譯器的記憶體最佳化(區域性變數放在棧上,逃逸變數檢測)和垃圾回收器協作.同樣的,Python沒有顯式的指標,不代表在Python不能學習指標這個概念,在動態語言中,引用是和指標對應的概念(引用是隱式的指標,動態語言的變數和靜態語言的變數不是一回事).

    換句話說,如果上述底層實現的知識對於一個人而言是必要的(不管這個人是出於好奇還是什麼緣故),那麼從理論上說,他可以從Python出發來獲得這些知識,只不過實際上有一些因素限制了這一點,那就是絕大多數的較為底層的應用和教材都是用C語言寫的(也還有一些是用Java或者虛擬碼之類的寫的),由於C的設計比別的語言更加simple(不像例如Rust之類的基於LLVM的語言,最佳化就有好幾層,編譯以後程式碼都嚴重變形了),可以更好在課堂上教授(例如彙編程式碼更加好閱讀等等,型別系統更加簡單).

    如果"過時"的含義是從程式語言設計的角度說的,不是從程式語言流行程度的角度說的.從某種意義上看,C語言和Python語言都"過時"了(當然Python還是比C年輕),因為他們都差不多是上個世紀80,90年代的產物了,至多隻能反應當時的程式語言的設計水平,也就是面向物件風靡的時刻,而像近幾年出現的Typescript等程式語言才能算是比較"先進",從這個角度說,沒有吸收最新程式語言研究成果的C語言確實就已經"過時"了.不過這種"過時"並不說C語言就不好,只不過是說對於這種程式語言,大家都已經研究透徹了,所以大家在著手設計更加複雜,更加抽象的程式語言.簡單的語言包含在更加複雜的語言之中,這並不代表簡單的語言過時.舉例而言,正則表示式比圖靈完備的語言簡單,但是日常程式設計的時候程式設計師仍然大量使用正則表示式,但這也並不代經常使用的正則表示式就要比更少使用的更加強大LL(1)優越一些。

    說了那麼多,就想指出一件事情:如果我們抽象的看待程式語言,那麼C語言是完全包含在Python之中的,因此理論上,任何使用C的教材可以改成用Python來寫(但是這種改寫實際上至多發生在程式設計師的心靈之中,不會有人真的幹這種事情),因此Python程式設計師無須因為Python比C更好寫而感到自不如人或者低人一等.從程式語言設計的角度上(和上手難易度)說,C語言確實比不上現在出現的新語言,但是從實際的使用上看,C語言還是比較比較主流的選擇.

    其實這種糾結並不只是你有,還有800多萬的小夥伴在陪你一起糾結。

    讓我來說,答案很簡單:選你感興趣的!我們都知道,興趣是好老師,所以培養興趣很重要。而如果你不確定自己對哪個語言更感興趣,那麼可以參考下面的方案:

    如果你想做技術,走技術路線,那毫無疑問先學C語言百利而無一害。

    如果還不確定以後的路想怎麼走,那無所謂先學Python還是C,隨緣吧。

    如果確定了不想走技術路線,那麼請先從Python開始。

    其實,從兩種語言入門,各有各的好處。

    從C語言開始入門的話,它的語法結構比較嚴謹,把C語言學透徹了,再學其他的語言就簡單多了,可謂是一通全通。C語言是一種面向過程的語言,而Python是一種面向物件的解釋型計算機程式設計語言。先了解什麼是面向過程,然後去了解什麼是面向物件,這樣學習更有效率。

    從Python入門,也有它的道理。Python入門程式比較簡單,在前期也比C語言容易學一些。學習C語言就比較枯燥,很難迅速見到成效,可能會摧毀你的學習積極性。先學習Python,雖然可能對底層實現方面瞭解比較模糊,但是這方面也可以等學完Python再補上。

    當然,這個問題沒有標準答案。最終,還是要靠你自己實踐,才能知道什麼最適合自己。

  • 3 # 感性的瘋子

    python號稱21世紀的VB,python簡潔易學,相當於我們站在了巨人的肩膀上。而C語言是基礎,是程式設計思想最好的體現。

  • 4 # Java實用技術

    如果有人說“C語言過時了,要學就學Python,怎麼反駁他?”我的答案是不需要反駁他,為什麼?因為他不懂程式設計。

    本人從2012年工作,做過Erlang,做過Java,做過iOS,當然也學過C語言,也學過Python,對於這個問題我談一下自己的觀點。

    首先過時不過時的評判標準是什麼?

    我認為過時的評判標準是這個語言已經很少再使用了,市場份額越來越少,最後少到可憐。我們看圖說話,下圖是2020年3月份TIOBE 程式語言排名,TIOBE是程式語言統計非常著名的一家機構。第一名:Java、第二名:C、第三名:Python。

    第一名:Java 第二名:C

    Java和C一直在第一名第二名之間變動,Java一般用於開發企業服務,C語言一般用於開發硬體相關的,C語言更接近與電腦語言,執行速度不說是最快的至少比百分之九十九的語言都快吧。

    Python為啥能排名第三

    Python為啥排名第三是由於最近幾年的人工智慧,網路爬蟲等,隨著人工智慧越來越火Python的名氣越來越大。Python有著很多封裝好的工具,能夠做一些比較有趣的功能,實現同一個功能,由於Python封裝的更多所以寫的程式碼越少,也經常有人說Java要用100行程式碼搞定的功能Python只需要10行就能搞定,拿著這個標籤來標榜Python。

    Python真的好嗎?

    Python的名氣來源於人工智慧、更少的程式碼能實現功能。我覺得語言好不好和實現一個功能的程式碼量有多少沒多大關係,Python寫一個功能用10行,C寫一個功能用100行,照樣用C語言寫而不用Python語言寫。人工智慧需要更高的數學知識,從工作的角度上看Java職位有很多職位,而Python的職位也只有一小部分公司會招聘。有很多人抱怨說參加了一個Python培訓機構,培訓完找不到工作。Python的火也有點培訓結構炒的了,當年iOS非常火好多培訓機構投進去瘋狂量產iOS,到現在iOS程式設計師很難找工作,PHP火了,iOS不行了培訓結構就開始轉向PHP了,PHP不火了Python火了,現在培訓結構就大肆宣傳Python培訓,以至於培訓出來找不到工作,沒有更好的職位

    Python的應用場景

    Python用於人工智慧、用於網路爬蟲,我覺得這是它的應用場景。

    技術角度對比

    Python最大的熱點也是人人皆知重大缺點是允許速度,很慢,相對於C語言慢的是好多倍。我最討厭的是Python的語法縮排,還有那縮寫命名的風格,還有那啥都看不出來的方法簽名。對於Python的網路爬蟲確實是好用,我個人也不覺得使用Python做Web開發也不是很好,感覺Web框架像Django、Flask用的都不太習慣,還是用伺服器端寫api用大前端技術寫前端,前後分離的模式好。

    程式語言過時不過時是看程式語言市場佔有率而不是看最近一時的名氣,名氣也有可能是炒作出來的。
  • 5 # 墟里虛實

    我想說的是不用刻意去反駁他。因為:

    每個人在不同的語言階段認知是不一樣的;

    之所以有這樣的觀點,與一個人所處的環境是正相關的。可能他所處的工作崗位,僅用python就可以風生水起;還有人會說python過時了,要學就學golang。觀點各異,都要反駁,豈不要糟心死。python是門強大的優秀語言

    言歸正傳,不得不說python是一個全棧語言,也是一個膠水語言。我們只要認真學好他,在目前這個時代,混口飯吃還是不成問題的。可以應用的領域非常多:web開發、爬蟲、科學計算、人工智慧、金融分析、遊戲開發等等。雖然世人都說python執行慢,但你不可否認它開發效率高,出品快。你也不能否認現在硬體的發展水平簡直太快了,確實彌補了python的這個短板。

    C語言是不可替代的,至少目前

    當然,會說c語言過時的人,其實就是平時用不到c語言的人。他們不知道c語言的應用領域,不知道C語言的強大,也不瞭解C語言的高效。更不知道Segment fault的揪心。

    需要明確,現在工程往往都不是一種語言就可以解決的:哪怕web開發採用flask等web框架,相信大部分也是api介面,前端採用vue等框架;哪怕是科學計算、人工智慧採用python強大的現成庫,核心的演算法還是採用c/c++的lib庫。所以,不是沒有用,而是沒用到,沒需求。

    天道好輪迴,萬一上輩子是父子呢

    可知我們用的python是咋來的呢?也是用c語言寫的。所以你怎麼能說老子過時了呢,哈哈

  • 6 # 小兔子02

    我覺得嘛,每一個語言都有優點,只要是你用的好用的慣他就是一個好語言,要不然的話,這個語言就是不再使用或者是過期的,比如嘛,python它就是人工智慧的語言就是可以簡化一些c語言這些執行的那麼比如說c語言要100行的,那麼它可能只需要一行或者是極少行。那它的缺點就是實現的不是太多。一旦脫離了執行環境(它的環境開發也是用c語言開發的)就無法執行 c/c++ 它的使用會很活,可以執行一些複雜的程式 但是它的缺點就是指標太靈活了(出現一個bug重寫要比找的強) c#優化了c/c++他是借鑑了java的 並且c#有GC記憶體回收機制,它會自動分配記憶體,自動釋放一些資源 就不像c語言還需要手動釋放 但是他的缺點就是因為指標限制的太死 但是在net4.0以上有一個叫DllImport的類 這個類的主要作用就是在c語言內跨語言呼叫 java主要就是適用於網路 並且java 有finl這個關鍵詞 c#沒有 但是它的缺點就是它實現的太少了 比如說要呼叫sql資料庫 你還需要引用其他的jar包 c#在net框架中有sql資料庫呼叫的類

  • 7 # 挪威的凌晨

    我的專業是資料科學與大資料技術,大一最先開始學習的便是C語言,它是學習計算機程式語言的入門語言,也是編寫作業系統的首選語言。

    大多數高階語言是從C語言發展起來的,包括Python,很多概念與C語言想通。

    「可以說C語言是學習有關計算機知識的一個基礎」

    大二有了C語言的基礎之後,學習安排了Python這門課程,程式碼確實比C語言簡單,很多現有的模組包直接使用。

    「但是如果不學習C語言,便不能更加透徹理解Python語言」

    作為一個新手來說,先學習Python也無妨,Python簡單易上手,主要用於人工智慧。對於我們大資料來說,必學Python。用於網路爬蟲,資料分析等。

    各大高階語言都有它的獨到用處,各有特點,這需要自己未來走向選擇,沒有絕對性。

  • 8 # 股市快快報

    2.C和Python的比較:說在前頭,C和Python都是非常好的語言,二者的使用場景有一定差異,每個人偏愛的語言也不同,沒有必要因為這種事情爭執。我個人最喜歡的語言是Python,理由僅僅是有些時候看著寫的非常Pythonic的程式碼,會覺得很舒服。

  • 9 # ITBang

    你可以告訴他:“Python”的母親就是“C語言”。

    "Python" mother is "C"

  • 10 # 明天的昨天

    首先,要解決一個問題,C語言過時了嗎?很多人都會這麼認為,的確C語言的能力在很多領域的應用已經被超越了。可是,這僅僅是一個誤解。跟後來興起的計算機程式語言比較,C 語言的很多特點深受詬病,這只是不同的應用領域造成的視覺誤差。其實,C 語言在很多領域的應用是其他高階語言無法相比的,微控制器控制和程式設計中C語言是不可代替的,效率更高,可塑性更強悍。因為,微控制器和計算機系統底層程式非常依賴C語句的設計能力。python、C++、JAVR、C#等程式語言主要應用於上層應用程式的設計。所以,我們選擇什麼樣的程式語言關鍵看需求。

    我們要明白下面的事實!

    第一、C語言資格老,成熟!因此,廣泛應用於系統軟體與應用軟體的開發。這是新興語言無法比擬的,C語言擁有巨大的資料庫。

    第二、C語言編譯器普遍存在於各種不同的作業系統(Microsoft Windows, Mac OS X, Linux, Unix等)

    第三、C++、Objective-C、Java、C#等後起之秀,都受到了C語言的影響,都有C語言的影子,屬於專門應用方向的改良版。我們看看C語言的特點吧!

    1、語言簡潔、緊湊、使用靈活,這在微控制器控制中獨領風騷。

    2、運算子豐富,是C語言強大的根源,這要在程式設計實踐中獲得感受。

    3、語言生成的程式碼質量高,編譯過程更穩定,硬體程式設計都用它。

    4、可移植性好這是一個不可迴避的優點。

    5、語法限制不夠嚴格,這是缺點,同樣也是優點,就像漢語可以描述好多意思。強大的程式都是基於如此豐富的表達能力,可是初學者的確會因此招罪。不過,這正式養成程式設計思維的重要過程。

  • 11 # 中老師

    如果說這話的,是一個你在意的人,你不要正面反駁他,就說Python語言直譯器就是用C語言開發的,Python語言需要效能的部分,也都是用C實現來提高效能的。另外,多學習一門語言總沒有壞處。

    如果說這話的,是一個你不在意的人,甚至是一個你討厭的人,那麼你千萬不要反駁他。

    肯定傻逼,奉承傻逼,讓傻逼永遠沉浸在傻逼的狀態,永遠也不要出來,這不是一件非常有愛心的事情嗎?

    只要人人都獻出一點愛,這世界將變成美好的人間。

  • 12 # greatdju

    最近TIOBE公佈了2020年5月程式語言排行榜,其中排名前三的分別是C、Java、python。C排名第一。

  • 13 # 秒懂程式設計

    程式設計好比習武……

    地上有把倚天劍,還有把紫薇軟劍,你問我哪個強,想要哪個?我告訴你,我兩個都想要!

    忽然一陣大風吹來了一本《萬劍歸宗劍法從入門到精通》,你繼續問我三者只能取其一,問我要哪個?

    傻子都知道要簡譜——有了劍譜才可能草木為劍。

    語言是學不完的,你學完彙編還有 C.學完Java還有Python,學完go language還會有XLanguage等著他。

    當然我也可能拿不起紫薇軟體,抽不開倚天劍,但是也不妨礙我一把打狗棒浪跡江湖……

  • 14 # 小小學程式設計

    這個問題跟php是最好的語言一樣,沒什麼意義。

    任何計算機程式語言,既然被髮明出來,都有他的原因,都是為了解決一些特定問題。現在要看這些特定問題是否有更好的語言去替代了,c語言和python語言明顯一個偏底層開發注重執行效率,一個偏應用層偏開發效率。你說誰過時?

    諸如此種過時論最害人,一個有作為和理想的技術人,都需要去研究各語言的精髓,真正工作解決問題和開發產品的時候,才真正有的放矢,而不是抱著個死語言在那裡。

    我從業20年,科班的語言就只有Fortran、c及彙編,後面c++,java,JavaScript,perl,flash as,php,python,oc,go全是工作中閒雜時間自學,框架就更多了,結果很多專案都是幾種語言和框架整合開發。

  • 15 # 瓶凡科技營

    一、歷年世界語言排行榜

    如下圖所示,可以看到C語言自從1989年開始,就位居世界程式語言榜的前兩位,直到2019年,能夠在日新月異,技術不斷更新的IT界,風靡30年的光陰,還有什麼更好的理由能夠證明其地位呢?再看看Python語言,1999年的時候還排在23位,直到最近這些年才逐漸的被大家用起來,為什麼呢?因為人工智慧、大資料和機器學習等新興起的技術正好能夠應用Python,用Python讓大家感覺到方便好用,才使它逐漸的出現在大家的視野之中,一個從誕生起就穩居世界語言圈榜首,一個從無名小卒,到出露鋒芒,誰的地位高自然得知。

    二、C與Python誕生情況

    C語言誕生於美國的貝爾實驗室,由D.M.Ritchie以B語言為基礎發展而來,在它的主體設計完成後,Thompson和Ritchie用它完全重寫了UNIX,且隨著UNIX的發展,c語言也得到了不斷的完善。Python怎麼誕生的呢?1989年聖誕節期間,在阿姆斯特丹,Guido為了打發聖誕節的無趣,決心開發一個新的指令碼解釋程式,作為ABC 語言的一種繼承,1991年,Python的第一個直譯器誕生了,它是由C語言實現的,有很多語法來自C,又受到了很多ABC語言的影響。對比可以知道,C語言的誕生是為了編寫UNIX作業系統的需求,而Python的誕生是為了一個新的指令碼解釋程式,更友好便捷的解釋性程式,而且Python的編譯器都是C語言編寫的,所以從誕生的地點和目的,以及各自的對標功能可以看到,C誕生之初就是一個偉大的存在。

    三、兩者應用場景對比

    當前階段,在程式設計領域中,C語言的運用非常之多,它兼顧了高階語言和組合語言的優點,比如:作業系統/驅動開發、嵌入式開發、遊戲開發、資料庫程式和應用中介軟體等等。甚至可以大膽的說,一切其他語言能夠做的事,C語言的高手也一樣能夠實現。Python是一個高層次的結合瞭解釋性、編譯性、互動性和麵向物件的指令碼語言。應用上比如:網路爬蟲、後端開發、人工智慧、科學計算和統計與Web開發等。所以對比兩者的應用可以得知,兩種語言在不同的領域有各自的優勢,C語言不會過時,無論5G和未來的物聯網發展到什麼程度,Python可能會火在這個時代,但C語言會一直存在。至少學校的教科書入門語言仍舊選擇的是C語言。

  • 16 # 熱心觀眾12345

    機械工程師培養一個資深的要二十年,才能設計出穩定的系統。所以機械工程師越來越不值錢。為啥?成本太高,找一切機會用電傳,邏輯電路替代。知識越難學,越會被替代。C是專業語言,用來做嵌入系統,作業系統,實時系統。否則,python。Java。沒什麼好糾結的。我當年的程式都是彙編寫的,C算個球。這輩子我也不會再去改之前的程式碼,也不會再用匯編。

  • 17 # 老甘閒聊

    全球程式語言熱度排行中,C語言常年雄踞冠軍寶座不是沒有原因的。C語言是介於高階語言與低階語言之間的程式語言。其實C強大的一面,反而是在作為低階語言時表現出來的。現在的嵌入式系統,大部分相容C語言,程式碼執行效率高,應用場景極度豐富。如果有志於深入學習計算機系統級應用開發,以及面相硬體的底層開發,C是繞不來的技術。作為一個學不會組合語言的我來說,你是想象不到用C做嵌入式開發的快樂的。

    python之所以火熱,是因為其良好的跨平臺特性和優秀的附加庫支援。但是python畢竟是指令碼語言,是高階語言之上的,其面相底層的開發能力,遠遠沒有C來的直接,高效。另外,如果一個程式設計師只會python,那麼他對計算機底層的操作邏輯是缺少感覺的,什麼都給你打包好了,你就不去思考深度最佳化的問題了。

    還有一點,就是最好的程式設計師,不會受限於程式語言。他們思考程式設計問題是基於硬體與演算法邏輯來進行的。使用任何程式語言,只是實現的一個步驟而已。高手用手機也能拍出大片感,菜鳥給你個單反你也出不來高階感。語言學的多了,就明白了重要的是對計算機底層執行規則的理解,用什麼語言只是表面功夫。

  • 18 # 天一閣圖書管理員

    沒必要反駁,什麼場景用什麼工具,順手就好。Python寫起來短平快,出錯了容易定位,對初學者比較友好。C寫起來慢,出錯了初學者頭疼不已。但是想要用Python做複雜軟體,耗費的精力反而會超過C語言。寫寫指令碼,做做模型,Python具有先天優勢。

  • 19 # 大鹿王

    不需要反駁,蘿蔔青菜各有所愛,而且需要要根據應用環境決定最合適的需要,如果你是高效能高併發,C當然是優勢,如果你要速成,自然最好不要用C

  • 20 # cqdoctor

    很多核心的東西都是C語言編寫的,就python那執行效率肯定不行的,只能說應用的場景不同,不存在C語言過時這種說法。

  • 中秋節和大豐收的關聯?
  • 伊朗國奧隊對陣國奧會如何?