現代編程
Ⅰ 編程語言從難到易排行
相對而言,Python對於初學者更易於理解,它的優勢就在於它更接近自然語言,但是它像腳本語言一樣,只是單純解釋執行這就會給初學者在面對錯誤的時候無所適從。
其他的腳本語言就不推薦了,學習了並沒有什麼大作用。
C語言,如果作為大一新生必須學習就沒辦法,不然不太推薦,因為它簡單的風格就限制了它的易理解性(強迫症可以忽視),總的來說還是很好的一門編程語言,對於底層硬體支持特別好(硬體說的是單片機一類的,如果是固定x64-86架構的,其實都差不多)。
C++和C#這類面向對象語言過於復雜,不建議初學者學習。
而Java比較好的一面是,會的人多,資料豐富,庫豐富,初學者學起來難度不是很大,而且很多思維方式都是現代編程語言所共有的。Java就顯得中規中矩。
補充:所以排序是Java>Python>其他面向對象語言>C/C++>其他腳本語言>其他語言
編輯於 2018-03-18著作權歸作者所有
贊同 4
喜歡 0
Ⅱ 現代編程釆用什麼方法
現代化編程應該是:不強制用相同的 IDE,統一的代碼風格,方便的依賴管理,持續集成,版本控制等。
在我的青少年時期,我涉獵了編程基礎和一些匯編。當我學習了 Turbo Pascal 之後這事更進了一步,它提供了一種最早期的集成開發環境(IDE)。我覺得這下合我心意了。實際上,IDE 是一種讓你在一個友好的環境內,方便地編寫、編譯、調試和運行代碼的程序。Turbo Pascal 沒有太多的圖形界面(它基於文本),但它有菜單和窗口。你可以進入調試模式,跟蹤變數的值等等。
然後我轉到了 Delphi (一種圖形化的 Turbo Pascal),它擁有到今天看來仍然不錯的出色 IDE。我用 Visual Basic 設計了一個「會報時的鍾」,當時發表在 Bulletin Board Systems(使用 Windows 3.1 的一個系統)。那之後我發現了 Visual Studio。有好幾年我的 C++ 編程都是借用的 Visual Studio。以上就是我一直使用的所有 IDE。
早在八十年代初,Smalltalk 就有了著名的強大圖形化 IDE(Youtube 視頻)。
我認為,使用 IDE 並不代表著「現代化」。現在的 IDE 和過去的 IDE 非常相像。雖然我們編程的內容改變了,但在很多情況下,我們如何編程卻沒有改變。在我的 Dell 筆記本電腦里裝著最新版 Visual Studio。換做 20 年前的我,也能完美地輕松上手它。調試、代碼補全、遠程代碼執行,它和以前很像。事實上,Visual Studio 從未與 Turbo Pascal 相差很大過。而我發現這非常令人沮喪。我以為我們應該取得比這更快的進步。
我提出了現代化編程在桌面外觀上難有作為的觀點。圖形化用戶界面(GUI)只是表層。現代化編程技術都是關於流程和實際工具的,而不是它們之上的表層。我不在乎你是否使用 Eclipse 或 Emacs,這和你如何現代化毫不相關。
那麼,什麼是「現代化」?
編碼是社會化的
在 20 年前,要求你公司里的每個人都使用相同的 IDE,並且要唯一依賴於這種 IDE 來構建、測試和部署代碼,這是很明智的。但在你公司外有很多聰明的人,他們往往不使用你這種 IDE。如今,你可以觸及他們了。這意味著對於所採用的工具和流程你必須明智。
如果你嘲弄使用 Atom 文本編輯器、Visual Studio 或者 Emacs 編程的人,那你就不是社會化的。你需要盡可能的包容,否則就會付出代價。
Go 語言有自己的格式化工具
我不在乎在你保存的時候,是不是自動重新格式化代碼,或者有沒有點擊重新格式化按鈕,或者是不是輸入 go fmt,這些都一樣。但它無疑是一個卓越的現代化的想法。這就是進步。所有的編程語言都應該為用戶強加一個唯一的代碼格式。別再 bikeshedding(過於關心旁枝末節,而忽視主要問題)。
我們很清楚 Java 擁有規范,但規范是不夠的。我們需要一個工具,能把代碼作為輸入,並生成一個唯一定義了的輸出,它能處理從行長度到空格的所有問題。
這個工具的目標是對於應該如何格式化代碼,不再有任何可能有的爭議,而且產生正確的格式不費吹灰之力。我簡直無法告訴你這是多麼的重要。
像 Rust、Go、Swift 這樣的編程語言有自己的程序包管理系統
因此,例如在 Swift 中,我可以創建一個名為 Package.swift 的小文本文件,並把它放入我項目的根文件,在那裡聲明我的依賴。
importPackageDescription
letpackage = Package(
name: "SwiftBitsetBenchmark",
dependencies: [
.Package(url: "https://github.com/lemire/SwiftBitset.git",
majorVersion: 0),
.Package(url: "https://github.com/lemire/Swimsuit.git",
majorVersion: 0)
]
)
然後我可以輸入 swift build,軟體會自動抓取依賴代碼,並構建我的程序。這在 Swift 運行的所有地方通用。你使用哪種文本編輯器和 IDE 都沒關系。
你不想使用文本編輯器,而更喜歡圖形界面?可以。都沒有區別。
為什麼那樣顯得現代化?因為自動地解決依賴關系而不費吹灰之力,對於 20 年前的我來說就像魔術。並且自動地、系統地解決依賴關系是極其重要的。我不想永遠都不得不手動安裝和部署一個依賴項。我希望其他人能夠在幾秒內把我的庫添加到他們項目中,而不是幾分鍾或是幾小時。
是的,你可以將它添加到現有的語言(如:Java 的 Maven 或是 IED)但需要有一個唯一的方法讓它起效。
像 Rust、Go、Swift 這樣的編程語言,在一開始就支持單元測試。
比如在 Go 里,創建一個 filemyproject_test.go,然後添加 func TestMyStuff(t * testing.T)這樣的函數,然後輸入 go test 既可。
在 20 年前,幾乎沒有人測試他們的代碼,而今天已經是一個必要要求,您和它需要以一種唯一的方式來做,這樣你就可以在項目之間移動,還總是知道如何測試了。
如果不能在你的代碼中立刻認出健全的單元測試,我會設想你的代碼嚴重損壞了。
持續集成
代碼更改時,你想要一個遠程工具來獲取新代碼,並測試它,以便可以提前停止回歸。人們可以在你的代碼上運行測試還不夠,他們還需要看到自動化測試的結果,自行檢查最終的故障。
持續集成是較大規模計劃的一部分:你必須在你編程的時候瘋狂地自動化程序。體力勞動應該最小化。有時候這意味著你真的應該只是點擊一個按鈕,無論是通過一個圖形化用戶界面,還是命令窗口,但它不意味著需要反復地遵循一系列復雜的命令。
版本控制
20 年前,你在桌面上編寫代碼,並通過電子郵件發送新代碼(作為補丁)是講得通的。但這只在緩慢的合作節奏中有意義。如今,這么做是愚蠢的。任何差於 Git 的都是落後的。注意,如今甚至微軟構建 Windows 也使用 Git。
那麼,當你共事於從來沒有聽過現代編程的聰明學生會發生什麼呢?他們看一個類似 go get 的命令,只看得到表層(一個命令行)。他們認為這是落後的。漂亮的圖形在哪?
他們使用一個好看的 IDE 工作,像是 Visual Studio 或 Eclipse,並確信自己是現代化的,完全無視 IDE 可以追溯到幾十年前的事實。然後並沒有使用 IDE 的優勢,比如更好的功能可見性和更快的操作,而是在其他地方使用現代化編程技術。他們堅持守舊派編程:
沒有測試。至少,沒有自動化和系統化的測試。
在一個具體的設置上難以處理依賴關系。
沒有自動化。沒有持續集成,沒有自動化部署。
他們編程就像我幾十年前使用 Turbo Pascal 入門的時候。盡管 Turbo Pascal 有圖形化用戶界面(GUI),但它是非常古老的學校。
Ⅲ 編程的未來行業情景怎樣
新的一個十年來到,隨之而來的是對技術變革和趨勢的興奮之潮。軟體開發已成為世界幾乎每個部門不可或缺的一部分,因此軟體開發的發展和變化對我們的生活產生了巨大影響。盡管我們無法始終准確地預測技術的發展前景,但我們仍有望在新的十年中延續一些趨勢。
1、人工智慧將繼續佔主導地位
盡管人工智慧已經存在了很多年,但它每年都在不斷增長和增強,成為全球許多技術的基礎。開發人員預測,隨著越來越多的行業在基礎架構中採用AI,人工智慧將繼續佔主導地位。
2020年的最大趨勢表明,醫療保健,教育,旅遊行業和社交媒體將使用AI來提供個性化的體驗,幫助和預測服務。人工智慧將成為整個行業新的競爭優勢,改變我們對人類參與和資源的思考方式。深度學習框架Tensorflow 2.0預計將主導市場。
2、Python預計會隨著AI和Ml的發展而崛起
從ML研究到視頻游戲開發再到Web開發,Python一直被證明是一種流行且廣受歡迎的語言。由於ML和AI的發展正在上升,因此預計Python將在這種穩定的增長和普及中繼續發展,特別是對於令人印象深刻的創新,包括ML驅動的聊天機器人。
盡管「增長最快」語言的概念可能很難確定,但數據表明Python可能是塊不錯的蛋糕。Python不僅用於各種流行領域和工作,而且入門門檻低,並且由新一代開發人員培育而成的支持社區。
3、5G可能是為開發人員打開大門的下一個重要物種
5G將於2020年進入市場。這個令人興奮,更快的網路帶來了開發人員需要解決的新問題。盡管存在諸多弊端和爭議,但5G仍有可能革新手持設備,並為開發人員進入分布式技術的底層打開大門。
它為開發人員提供了開發更強大的應用程序和增強現實功能的機會。總體而言,預計5G將改變整個世界-從為智慧城市提供動力,到改善交通系統,再到增加網路擴展能力。
當然,5G的處理能力還帶來了開發人員必須解決的問題,例如最近對天氣預報技術的關注或對覆蓋范圍不佳的吐槽。不管面臨的挑戰如何,該技術都是有前途的,值得學習投資。
4、邊緣和雲計算的使用預計會上升
與5G一同出現的還有邊緣計算的潛力:一種分散式計算基礎架構。邊緣計算的高度分布式模型可能有助於克服雲計算的缺點。這些發展可能是計算和工業的未來。
事實證明,雲計算對於公司基礎架構至關重要,並且隨著網路安全問題的持續存在,各行各業的大公司都將雲作為解決方案。
最重要的是,到2020年底,全球公共雲服務收入預計將從2278億美元增長到2664億美元。邊緣計算預計將隨著雲計算功能的升級而增長。實際上,預計全球Edge計算市場將從2018年的14.7億美元增長到2025年的268.4億美元。
5、預計會有新突破的語言:Rust,TypeScript,Kotlin和Swift
在過去的十年中,已經創建了數百種編程語言。這種從過去的單一語言的轉變使開發人員能夠使用專門的語言來工作,這些語言更加側重於開發人員的人機工程學和硬體的現代化開發。
種類繁多的編程語言可使開發人員增強能力,增強行業實力,並將我們的重點轉向解決人類問題。StackOverflow研究表明,到2020年,排名前四的現代編程語言將為Rust,TypeScript,Kotilin和Swift,其中Rust在過去四年中連續第四位。
6、 Kubernetes成為Mesos和Docker Swarm的勝利者
隨著雲計算的興起,容器化應用程序的興起。在這里,Kubernetes顯然是贏家。隨著雲技術繼續與我們的世界融合,Kubernetes將成為各地開發人員的重要工具。研究表明,Kubernetes的受歡迎程度持續上升。開發人員預測,到2020年,我們將看到此流行應用程序的最佳實踐和標准化的興起。
7、Web框架:React繼續發光
React對Web開發產生了巨大的影響,它帶來的創新對開發人員都非常有用。它已被證明是過去一年中最主要的JavaScript框架。而統計數據表明,這種情況將持續數年。盡管其他框架(例如Vue)提供了自己獨特的功能,但是React由於其靈活性和健壯性而受到許多人的青睞。
而且,由於React得到了Facebook的支持,因此它將作為Web開發的標准在業界不斷上升。查看這些Google趨勢,以了解自2017年以來React在全球范圍內的關注程度。
8、降低軟體開發入門的門檻:會有越來越多的自學成才的程序員
盡管對技術行業有普遍的認識,但是軟體開發的供需之間還是存在差距。隨著全球大學價格的上漲,越來越少的人選擇計算機科學專業。預計在未來幾年內,軟體開發人員的進入門檻將降低,從而為自學成才的開發人員騰出空間。
此外,一些開發人員預測,LCCS開發(低代碼,無代碼開發)將為企業創新提供增長,而無需CS學位持有者。
在線學習平台是行業轉移的原因之一。Ecative為所有級別的開發人員提供大學水平的課程,以提高他們的編碼技能,並以低廉,無壓力的成本處理新語言。2020年的目標是使世界各地的人們能夠在沒有大學負擔的情況下加入發展世界,學習編程的隊伍中來。
Ⅳ 編程時選用的程序設計語言,對軟體的開發與維護的影響
編程時選用的程序設計語言,對軟體的開發與維護的影響?
這個是有一定的影響的,有些編程語言維護起來比較簡單,而有些編程語言維護起來難度還是比較大的。另外也要考慮到運維人員的接受程度。
Ⅳ PHP,Java,Python,C,C++ 這幾種編程語言都各有什麼特點或優點
說到底還是用途不一樣。。性能不一樣。。。
先說C吧,它是現代編程語言的祖師爺,所以非常古老了,在現代應用中使用不多。但由於C是祖師爺,所以絕大部分語言,寫法都和C語言差不多。。。常常用作學習其他語言的基礎。。而C語言也有其他語言不可替代的用途,現在最主要的應用就是單片機。。。單片機是啥?就是用C語言控制一些簡單的電子元件。。。比如電視用的遙控器,其實就是一個單片機。
PHP是用來做網站的,其實從技術角度,屬於第一代的後端技術(植入式腳本技術),現在最新的後端技術,已經發展到第三代了(MVC架構),因此從技術上講,PHP早該過時了,但由於市場需求的存在,所以它依然是做網站後台的主流之一。。就類似於WindowsXP一樣,技術上太淘汰了,但市場卻依然是主流,普及度依然很高。缺點一大堆,但又個最主要的優勢,就是簡單。。。MVC雖好,但學習難度遠比PHP要高的多。
C++是面向對象的C語言,由於偏底層,所以性能非常高,僅次於C語言,主要用在一個要求高性能的領域。。。這個不好說,因為實際需求上,用處挺雜的,而且也確實不太好學。。因為它把C語言面向過程的那套東西,和JAVA面向對象的那些東西,堆砌到了一起。。也就同時把兩種完全不同的思想揉在了一起。。個人的理解是,它就像周星馳電影里的那個「要你命3000」,把蒼蠅拍,殺蟲劑,手槍,手榴彈,滅鼠靈,用一根麻繩串在一起。。。殺蟲可以,滅鼠可以,殺人也可以,堪稱無所不能。。。但用起來,真是麻煩死了。。所以對於很多人來說,認可它的地位,承認它的功能,但敬而遠之。
JAVA是今天真正意義上的大道正宗,名門正派。。。。丐幫有降龍十八掌,華山派有獨孤九劍。。但你卻很難說出,少林派有什麼武功特別強。。而它又是公認的名門正宗。。。這其實就已經說明問題了,JAVA沒有什麼特別強的方面,但每個方面都不弱。。整體平均值,便非常高。。JAVA還有一個比較突出的優勢,就是它是安卓系統的官方開發語言。。既然說到了少林,就不得不提一下武當。。。那就是微軟的官方語言C#。。。.C#和JAVA相比,其實80%都是一樣的。。幾乎等於學一門,會兩門,C#比JAVA稍微簡單一些,IDE也好一些,其實比JAVA更適合新手,但由於之前不能跨平台,所以流行度比JAVA低,但確是游戲開發行業的第一大語言。。JAVA與C#基本可以看成一門語言的兩種方言。。英式英語和美式英語的差別一樣。。說到底還是半斤八兩。。。一個是傳統應用和安卓系統的第一大語言,一個是WINDOWS系統和游戲開發的第一大語言。。而且學一門會兩門,你還要求啥?
Python也是個很有歷史的語言,誕生時間和JAVA,C#差不多,但今天卻依然非常時髦。。因為它的語法,簡潔,優雅,風騷到了極致。。像寫信一樣寫代碼。。而又無所不能,JAVA和C#能做到的,Python幾乎一樣都不少。。。簡單易學,尤其受到初學者喜愛。。但Python更像一把雙刃劍,優點特別突出,缺點也特別明顯,就是特別慢。。。一般認為,Python比JAVA慢25倍到50倍。。還有一門語言叫Ruby,和Python相似,也是語法特別簡潔。。但比Python更慢,用途也不如Python。。。基本可以看作華山,丐幫,在某些情況下,可以勝過少林武當。。但整體上比較,還是要差一截。。但即便如此,它的前景也是非常好的。。由於語法簡單,更容易被機器解析,所以在人工智慧領域非常有前途。比如那個下圍棋的Alpha Go,以及中國的北斗衛星定位系統。。都有大量的Python代碼在裡面。
Ⅵ 為什麼現代編程語言支持更多的編程範式,這樣更
通過反觀過去半個世紀以來編程語言的進化方向,我認為編程語言絕對不會按照保羅.格雷厄姆所說,向著「小而干凈」的方向進化。現在的編程語言,無論時功能上還是語法上都已經不是那樣單純了,雖然也曾經有人努力嘗試將這些語言變得更小更簡單,但包括保羅.格雷厄姆自己所設計的Arc在內,都決不能算是成功的嘗試。
在我看來,編程語言的進化動機,不是工具和語言本身的簡化,而是將通過這些工具和語言所得到的結果(解決方案)更簡潔地表達出來。近半個世紀以來,編程語言不斷提供愈發高度的抽象化特性,也正是為了達到這個目的。因此我們可以很自然地認為,這種趨勢在將來也應該會繼續保持。