成人黄色在线网站 I 国产aa免费 I 中文字幕免费高清 I 国产三级影院 I 日韩欧美三级在线观看 I 久久久国产精品麻豆a片 I 欧美与黑人午夜性猛交久久久 I 91国产精品视频在线 I 国产美女狂喷水潮在线播放 I 黄页免费网站在线观看 I 欧美日韩激情视频 I 午夜理论无码片在线观看免费 I 深夜爽爽动态图无遮无挡 I 国精产品一区一区三区有限公司杨 I 天天操天天舔天天爽 I 免费看日本黄色片 I 成人va在线 I 日韩中文字幕在线观看 I 婷婷综合网 I 97视频免费观察看 I 色月丁香 I 日韩视频一二三 I 男女黄色毛片 I 美女疯狂连续喷潮视频 I 亚洲日本va一区二区sa I 欧美日韩视频区 I 毛片网在线 I 欧美一本在线 I 少妇一级淫片免费放香蕉 I avav在线看 I 久久精品亚洲中文字幕无码网站 I 天堂av在线中文在线新版 I 电影一区 电影二区 I 色av吧 中文字幕 I 国产精品伊人色

歡迎來到培訓無憂網!

全國切換

咨詢熱線 400-001-5729

位置:培訓無憂網 > 新聞資訊 > 電腦/IT > python培訓 >  有些高級開發不喜歡 Python的原因

有些高級開發不喜歡 Python的原因

來源:培訓無憂網 發布人:彭二胖

2021-11-16 23:13:59|已瀏覽:275次


        不少人認為 Python 方便掌握,而且不易出錯。然而,并非所有人都同意這個觀點。

        許多高級開發表示,使用動態類型的語言實在很令人頭疼:

        “什么?動態類型的語言比靜態類型的語言更加不容易出錯?抱歉,21年的軟件開發職業生涯告訴我并不是這樣。”

—— Rasmus Schultz

        在本文中,我們就來看一看高級開發人員不喜歡動態類型語言的主要原因,同時我也希望通過本文消除大家的誤解。

        為了更好地挖掘背后的原因,以及鑒于 Python 的廣泛普及,我們以 Python 為例來分析一下。

動態類型 

        這里所說的動態類型指的是數據類型。

        編程語言包含多種類型的風格,比如強類型和鴨子類型等。但是,在本文中我們只討論兩個最常見的類型:

  • 動態類型

  • 靜態類型

        動態類型指的是在運行時檢查類型錯誤。也就是說不需要顯式聲明數據類型。Python、Ruby 和 JavaScript 都是這類語言。

        與動態類型相反,靜態類型則會在編譯期間報告類型錯誤,因此你需要顯式聲明數據類型。C、C++ 和 Java 就屬于這種情況。

        一般來說,Python 以及其他編程語言的某些優點也會成為缺點。

        動態類型可以通過隱式的數據類型聲明減少一部分代碼,從而讓編程變得更容易。但是,這個特性也有一些缺陷。

        請考慮如下 Python 代碼:

        max_number = 12

        my_list = []

        for i in range(1, 5):

                max_numbre = 2 * (max_number * i)

                my_list.append(max_number)

        print(my_list)

        輸出結果:[12, 12, 12, 12]

        在這個例子中,我們希望針對變量 max_number 進行一些計算,并將結果存儲在列表中。但是,我們可以看到實際的操作并不符合我們的預期,而結果也是錯誤的。因為在 for 循環中,max_number 的拼寫有誤,因此導致程序創建了另一個名為 max_numbre 的變量。

        任何人都可能犯這樣的錯誤,特別是對于工作壓力很大的人。

        假設你正在編寫一大段代碼,那么你必須更加小心手指按下的每一個按鍵。否則,查找代碼中的bug就會成為噩夢,并引發維護性的問題。

        然而,在靜態類型的語言(比如C++)中,你必須在使用前聲明變量。而且你必須在執行代碼前進行分析,以確保變量類型匹配。這樣你對變量的控制會更有力,因此可以提高安全性。

全局解釋器鎖

        高級開發人員對動態類型語言的另一個質疑是性能。

        初級開發人員只需要處理好幾行代碼,而維護和編寫健壯的生產代碼(幾百行~幾千行)的重任一般都由經驗豐富的高級開發人員承擔。因此,對他們來說,編程語言的效率不容置疑。

        由于全局解釋器鎖(Global Interpreter Lock,即 GIL)的存在,計算機的資源(主要是 CPU 線程數)得不到充分利用,因此它是編程語言(如 Python 和 MRI Ruby 等)的性能瓶頸。

        不過,不使用 GIL 的編程語言可以充分利用 CPU 的功能,因為它們支持并行計算。

        并行計算只不過是讓所有線程同時運行而已。在需要處理的數據量十分龐大時,這種類型的計算會比較有優勢。

        我們可以假設,在相同的 CPU 時鐘速度下,計算機擁有的線程越多,程序的運行速度就越快。

        然而,GIL 的出現終結了并行計算。

        GIL 的作用是保證一次只有一個線程使用 GIL。線程的選擇遵循排隊方式。這意味著,當擁有最高優先級的線程正在使用 GIL 時,其他線程將處于等待狀態,直到 GIL 被釋放。

        最重要的是,用戶無法控制線程的選擇。只能由操作系統負責線程優先級的排序。

        為了解決這個問題,許多程序員都嘗試手動在多個線程之間拆分進程,比如 Python 的 multithreading 模塊,就是為了獲得更好的性能。然而,最終的結果卻是性能更差了。

        這個結果有點奇怪,如果你想搞清楚事情的始末,則必須再深入研究一下。

        盡管 Python 的核心開發團隊已經意識到了這個問題,但是想擺脫 GIL 太難了,因為它是許多 Python 功能的基礎,例如內存管理和C擴展等等。

        Python 的作者 Guido van Rossum 表示,他不確定 Python 是否會支持并行計算,因為這歸根結底是語言設計層面的問題。

        但是,C++ 等靜態類型語言不受 GIL 的限制,因此它們的效率相對更高。

空白的敏感度

        錯誤地使用空白就會報錯,并不是每個人都喜歡這樣的編程語言。空白不僅包括空格,還包括制表符、換行、返回或換頁等。例如,與C不同,Python 對空格就非常敏感。

        下面,我們就來比較一下 C 和 Python 代碼。

        Python 示例:

        i = 50

        if i % 2 == 0:

        print("inside if statement")

        print("i is even")

        輸出結果:print("inside if statement")print("i is even")^SyntaxError: invalid syntax

        C 示例:

        #include<stdio.h>

        intmain(void)

        {

                int i =50;

                if(i %2==0)

        }

        輸出結果:~/ $ ./test1insideifstatementi is even

        C 的代碼結構無論再怎么混亂,都可以得到正確的輸出,而 Python 生成的語法錯誤只是因為語句的書寫位置有誤。因此,有人可能會說 Python 的健壯性不如 C++ 或 C。

        盡管許多專業程序員都認為空白過于敏感很討人厭,但許多 Python 專家則認為,空白的問題總好過代碼長得看不到盡頭。

        最后,在處理大塊代碼時,空白的敏感性問題確實很煩人。但是,如果能夠向團隊灌輸良好的編碼習慣,則這個問題也很好解決。

向后兼容

        不支持向后兼容意味著舊版的 Python 代碼無法在新版本中正常工作。換句話說,每當新版本發布時,你都需要找出語法的變化,并重寫相應的部分代碼。

        有時,向后兼容性會成為一個嚴重的問題,Python 2 到 Python 3 就是一個很好的例子。

        Python 核心開發團隊認為,將 Python 2 的代碼轉換成 Python 3 不會有任何問題。但是他們錯了。 

        Python 的作者也承認了這一點:“我們低估了有多少人已經編寫了大量的 Python 代碼,而且他們已經基本忘記了代碼的工作方式。因此,他們沒能很好地升級這些代碼。我們已經意識到了這個問題。”

        這個問題爭論到最后,他們決定延長 Python 2.7 的壽命。

總結

        編程語言一直是一個熱門話題,這不是一個非黑即白的兩極分化問題。我們會因為某些原因而偏愛某一種編程語言。

        通常,每種通用編程語言都有特定的適合人群。Python 的官方作者曾說: 

        “學習使用 Python 編程比學習使用 Java 或 Swift 要容易得多。Java 和 Swift 非常適合計算機科學的專業軟件開發人員。但是 Python 更適合孩子的教學。”

        話雖如此,我們非常希望能夠出現一種兼具C++ 和 Python 優點的編程語言。

        本文由培訓無憂網千鋒教育專屬課程顧問整理發布,希望能夠對想學習Python開發培訓的同學有所幫助。更多Python開發培訓課程歡迎關注培訓無憂網Python開發培訓頻道或添加老師微信:15033336050


      注:尊重原創文章,轉載請注明出處和鏈接 http://m.hebeijilong.cn/news-id-4022.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注python培訓頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050

留下你的信息,課程顧問老師會一對一幫助你規劃更適合你的專業課程!
  • 姓名:

  • 手機:

  • 地區:

  • 想學什么:

  • 培訓無憂網
免 費 申 請 試 聽
提交申請,《培訓無憂網》課程顧問老師會一對一幫助你規劃更適合你的專業課程!