能多數(shù)朋友都不知道,其實我是理科生,碼農(nóng)出身,我們碼農(nóng)的祖師爺叫做Ada Lovelace。沒錯,祖師爺是一位優(yōu)雅的女士,她的姓氏也很有名-拜倫,浪漫主義詩人拜倫就是其父,魯迅先生翻譯的《唐璜》就是拜倫的著作之一。
作為曾經(jīng)的碼農(nóng),過往我們的開發(fā)并沒有太多用到顯卡,除非是專業(yè)的游戲開發(fā)類型的大咖,否則基本上都是和代碼打交道為主。
早期我們做開發(fā),并不會刻意去找配置高的電腦去做開發(fā)。首先,程序設(shè)計核心還是在于思維,而不是運行速度,而且在高端機上面可以輕輕松松實現(xiàn)的東西,有可能意味著脫離了用戶的實際情況。
畢竟更多的用戶采用的主流配置還是以性價比為主,而且不少朋友還是繼續(xù)使用舊設(shè)備,太過于超前的設(shè)計必然會脫離群眾。
相信很多人會說,一個上古的編程語言有啥說服力呢?不好意思,真正的上古的C、C++語言開發(fā)出來的東西,上限非常高。比方說,Linux就是基于C語言開發(fā)的。
Linux本來就是在Unix上面精簡而來的,從Linux上面才有了后面的安卓、IOS系列,也就是我們現(xiàn)在智能手機平臺的底層。
所謂高大上的mac系統(tǒng),底層也是C語言開發(fā)的,部分用上C++。同樣,Windows系統(tǒng)、office系列軟件、IE、Safari、Google Chrome、Firefox瀏覽器,都和C或者c++有著千絲萬縷的關(guān)系。
可以說,并不是上古程序設(shè)計語言不行,而是設(shè)計者上限不行。
后續(xù)的PHP、JAVA、C#一類的語言,在開發(fā)環(huán)境、跨平臺、管理便利性、安全性上面有明顯的進步,但從效率而言,C++依然占據(jù)著巨大的優(yōu)勢。
作計算機硬件,可以實現(xiàn)非常高效的代碼,因此C++在一些對性能要求很高的領(lǐng)域(如游戲、圖形處理等)得到廣泛應(yīng)用。而Java由于需要通過虛擬機來運行,其性能相對較低,因此在一些對性能要求很高的領(lǐng)域可能不太適用。不過,Java也有很多優(yōu)點,比如良好的跨平臺性能和易于編寫的特點,這使得Java在企業(yè)級應(yīng)用、大數(shù)據(jù)處理、移動應(yīng)用等領(lǐng)域得到廣泛應(yīng)用。
在生活實際中,C++和Java的應(yīng)用也有很多不同之處。例如,在游戲開發(fā)領(lǐng)域,許多游戲使用C++來實現(xiàn)高效的圖形處理和物理模擬。而在企業(yè)級應(yīng)用中,Java得到廣泛應(yīng)用,許多大型企業(yè)的后端系統(tǒng)都是基于Java技術(shù)開發(fā)的。另外,在移動應(yīng)用開發(fā)中,Java也有很好的應(yīng)用,許多Android應(yīng)用都是使用Java編寫的。除此之外,C++還有很多其他的應(yīng)用領(lǐng)域,比如操作系統(tǒng)開發(fā)、驅(qū)動程序開發(fā)、嵌入式系統(tǒng)開發(fā)等。總的來說,C++適合于對性能要求較高的領(lǐng)域,而Java適合于對跨平臺性和易于開發(fā)要求較高的領(lǐng)域。
當(dāng)然了,現(xiàn)在的程序開發(fā)并不是只用到CPU。通用計算就是能讓CPU和GPU協(xié)同運算,甚至GPU的作用更加巨大。
隨著顯卡的發(fā)展,GPU越來越強大,而且GPU為顯示圖像做了優(yōu)化。在計算上已經(jīng)超越了通用的CPU。如此強大的芯片如果只是作為顯卡就太浪費了,因此NVIDIA推出CUDA,讓顯卡可以用于圖像計算以外的目的。
G80核心之后的的顯卡都能使用CUDA,工具集的核心是一個C語言編譯器。G80中擁有128個單獨的ALU,因此非常適合并行計算,而且數(shù)值計算的速度遠(yuǎn)遠(yuǎn)優(yōu)于CPU。
CUDA的SDK中的編譯器和開發(fā)平臺支持Windows、Linux系統(tǒng),可以與Visual Studio2005,2008,2010集成在一起。
CUDA
CUDA(Compute Unified Device Architecture)是一個新的基礎(chǔ)架構(gòu),這個架構(gòu)可以使用GPU來解決商業(yè)、工業(yè)以及科學(xué)方面的復(fù)雜計算問題。它是一個完整的GPU解決方案,提供了硬件的直接訪問接口,而不必像傳統(tǒng)方式一樣必須依賴圖形API接口來實現(xiàn)GPU的訪問。在架構(gòu)上采用了一種全新的計算體系結(jié)構(gòu)來使用GPU提供的硬件資源,從而給大規(guī)模的數(shù)據(jù)計算應(yīng)用提供了一種比CPU更加強大的計算能力。CUDA采用C語言作為編程語言提供大量的高性能計算指令開發(fā)能力,使開發(fā)者能夠在GPU的強大計算能力的基礎(chǔ)上建立起一種效率更高的密集數(shù)據(jù)計算解決方案。
對于專業(yè)設(shè)計人士來說,CUDA通用計算加速的效率還是非常可觀的。CUDA運算是NVIDIA的,自然就需要NVIDIA的獨立顯卡,而且對于顯存方面有一定的要求,一般來說不低于4GB顯存,6GB更好。
所以說,編程需要不需要一張高性能的顯卡,關(guān)鍵是你采用的開發(fā)環(huán)境。新一代的開發(fā)語言,有著更新的功能,面向新領(lǐng)域,但并不代表傳統(tǒng)的語言開發(fā)就完完全全過時。與其問沒有獨顯能不能編程,還不如問問,你的顯卡到底用來干嘛?
語言是一種通用的編程語言,自1972年由Dennis Ritchie在貝爾實驗室開發(fā)以來,它已經(jīng)成為計算機科學(xué)和軟件開發(fā)領(lǐng)域的重要基石。C語言以其高效性、靈活性和可移植性而聞名,廣泛應(yīng)用于系統(tǒng)軟件、應(yīng)用程序開發(fā)以及嵌入式系統(tǒng)等多個領(lǐng)域。本文將深入探討C語言的歷史、特點、應(yīng)用以及學(xué)習(xí)資源。
C語言的起源可以追溯到1960年代末,當(dāng)時的計算機科學(xué)家們需要一種能夠高效操作硬件的編程語言。最初,C語言是基于B語言(由Ken Thompson開發(fā))和BCPL語言(由Martin Richards開發(fā))而發(fā)展而來的。1972年,Dennis Ritchie在貝爾實驗室正式推出了C語言,并在隨后的幾年中不斷完善。
C語言的設(shè)計目標(biāo)是提供一種能夠直接操作計算機硬件的語言,同時又具備高級語言的特性。1978年,Brian Kernighan和Dennis Ritchie聯(lián)合出版了《C程序設(shè)計語言》(The C Programming Language),這本書成為了學(xué)習(xí)C語言的經(jīng)典教材,奠定了C語言在編程界的地位。
C語言具有許多顯著的特點,使其在編程語言中獨樹一幟:
C語言的編譯器能夠生成高效的機器代碼,這使得用C語言編寫的程序在執(zhí)行速度上往往優(yōu)于其他高級語言。C語言允許程序員直接操作內(nèi)存,這種靈活性使得開發(fā)者能夠優(yōu)化程序性能。
C語言的設(shè)計使得程序可以在不同的計算機平臺上編譯和運行。只要遵循C語言標(biāo)準(zhǔn),程序就可以在不同的操作系統(tǒng)和硬件上無縫遷移。這種可移植性使得C語言成為系統(tǒng)編程和跨平臺開發(fā)的理想選擇。
C語言的語法相對簡單,易于學(xué)習(xí)和使用。它提供了豐富的運算符和控制結(jié)構(gòu),使得程序員能夠以簡潔的方式表達復(fù)雜的邏輯。
C語言擁有豐富的標(biāo)準(zhǔn)庫,提供了大量的函數(shù)和工具,幫助程序員快速開發(fā)應(yīng)用程序。這些庫涵蓋了輸入輸出、字符串處理、數(shù)學(xué)計算等多個方面。
C語言允許程序員直接操作內(nèi)存地址,這使得它在系統(tǒng)編程和嵌入式開發(fā)中具有獨特的優(yōu)勢。通過指針,程序員可以高效地管理內(nèi)存和數(shù)據(jù)結(jié)構(gòu)。
C語言的應(yīng)用領(lǐng)域非常廣泛,以下是一些主要的應(yīng)用場景:
許多現(xiàn)代操作系統(tǒng)(如Unix、Linux和Windows)都是用C語言編寫的。C語言的高效性和對硬件的直接控制使其成為操作系統(tǒng)開發(fā)的首選語言。
在嵌入式系統(tǒng)中,C語言被廣泛應(yīng)用于微控制器和實時操作系統(tǒng)的開發(fā)。由于其對硬件的直接操作能力,C語言能夠滿足嵌入式系統(tǒng)對性能和資源的嚴(yán)格要求。
雖然現(xiàn)代游戲開發(fā)中使用了許多高級語言和引擎,但C語言仍然在游戲引擎的底層開發(fā)中發(fā)揮著重要作用。許多知名的游戲引擎(如Unity和Unreal Engine)都使用C或C++作為底層語言。
C語言在科學(xué)計算和數(shù)值分析中也有廣泛應(yīng)用。許多數(shù)學(xué)庫和科學(xué)計算軟件(如MATLAB的底層實現(xiàn))都是用C語言編寫的,因其高效的計算能力和豐富的數(shù)學(xué)函數(shù)庫。
C語言在網(wǎng)絡(luò)編程中也占有一席之地。許多網(wǎng)絡(luò)協(xié)議和服務(wù)器軟件(如Apache和Nginx)都是用C語言開發(fā)的,因其高效的網(wǎng)絡(luò)處理能力和對系統(tǒng)資源的良好控制。
學(xué)習(xí)C語言的資源豐富多樣,以下是一些推薦的學(xué)習(xí)材料和工具:
C語言作為一種經(jīng)典的編程語言,憑借其高效性、可移植性和靈活性,仍然在現(xiàn)代軟件開發(fā)中占據(jù)重要地位。無論是在操作系統(tǒng)、嵌入式系統(tǒng),還是在科學(xué)計算和網(wǎng)絡(luò)編程中,C語言都發(fā)揮著不可替代的作用。對于初學(xué)者來說,學(xué)習(xí)C語言不僅能夠幫助他們理解計算機的基本原理,還能為他們后續(xù)學(xué)習(xí)其他編程語言打下堅實的基礎(chǔ)。通過豐富的學(xué)習(xí)資源和實踐機會,任何人都可以掌握這門強大的編程語言。
編程#
AI 將是未來編程的主要工具,那么如果讓目前的AI來預(yù)測一下未來編程語言的選擇,會是什么樣子呢?
以下是AI的回答:
未來編程語言的選擇應(yīng)該基于你的具體需求、項目類型、團隊技能和行業(yè)趨勢。以下是一些在不同領(lǐng)域和場景下可能被推薦的編程語言:
- **JavaScript (Node.js)**: 由于其在瀏覽器中的普遍性和強大的生態(tài)系統(tǒng),JavaScript 仍然是 Web 開發(fā)的首選語言。
- **TypeScript**: 作為 JavaScript 的超集,TypeScript 提供了靜態(tài)類型和現(xiàn)代編程特性,適合大型項目。
- **Python (Django, Flask)**: 適用于快速開發(fā)和簡潔的代碼,Python 在 Web 開發(fā)中也非常流行。
(個人觀點,web開發(fā),JAVA也很不錯呀。)
- **Kotlin**: 作為 Android 官方推薦的語言,Kotlin 提供了更簡潔的語法和更好的性能。
- **Swift**: 蘋果的 Swift 語言為 iOS 和 macOS 應(yīng)用開發(fā)提供了強大的性能和易用性。
- **Flutter (Dart)**: 跨平臺移動應(yīng)用開發(fā)框架,使用 Dart 語言,支持快速開發(fā)和高性能。
(個人觀點,跨平臺更加有優(yōu)勢。當(dāng)然IOS原生開發(fā)效果更好,但是綜合考慮的話,還是跨平臺更加有優(yōu)勢。)
- **Rust**: 以其安全性、并發(fā)性和內(nèi)存管理而聞名,Rust 正在成為系統(tǒng)編程的熱門選擇。
- **C/C++**: 傳統(tǒng)的系統(tǒng)編程語言,適用于需要高性能和底層硬件控制的應(yīng)用。
- **Python**: 擁有豐富的庫和框架(如 TensorFlow, PyTorch, Pandas, NumPy),Python 是數(shù)據(jù)科學(xué)和機器學(xué)習(xí)的首選語言。
- **R**: 專為統(tǒng)計分析和圖形表示設(shè)計,R 語言在學(xué)術(shù)研究和數(shù)據(jù)分析中非常流行。
(個人觀點:機器學(xué)習(xí),python 好像是首選。)
- **C# (Unity)**: Unity 游戲引擎廣泛使用 C# 作為其主要編程語言,適合跨平臺游戲開發(fā)。
- **C++**: 由于其性能優(yōu)勢,C++ 常用于高性能游戲引擎和大型游戲項目。
- **Solidity**: 以太坊智能合約的首選語言,Solidity 專為區(qū)塊鏈應(yīng)用設(shè)計。
- **Rust**: 由于其安全性和性能,Rust 也在區(qū)塊鏈領(lǐng)域越來越受歡迎。
- **Go (Golang)**: 由 Google 開發(fā),Go 語言在云計算和微服務(wù)架構(gòu)中表現(xiàn)出色。
- **Python**: 由于其廣泛的庫和工具支持,Python 在自動化、腳本編寫和云服務(wù)管理中非常流行。
- **Julia**: 專為高性能科學(xué)計算設(shè)計,Julia 提供了接近 C 語言的性能和 Python 語言的易用性。
- **Python**: 由于其簡潔的語法和廣泛的應(yīng)用,Python 是初學(xué)者和教育領(lǐng)域的首選語言。
- **Scratch**: 專為兒童和初學(xué)者設(shè)計的編程環(huán)境,使用圖形化編程塊。
選擇編程語言時,考慮你的項目需求、團隊的技能和偏好、以及語言的長期支持和社區(qū)活躍度。不同的項目和目標(biāo)可能需要不同的工具和語言。
居然沒有 JAVA 和 PHP ???!!!
python 被提及了多次 !!!