Python是最受歡迎程式語言? 我被 Python 搞瘋的5個理由

Поделиться
HTML-код
  • Опубликовано: 3 дек 2024

Комментарии • 438

  • @威儒陳-t3o
    @威儒陳-t3o 2 года назад +185

    自學程式語言路過,先前有先玩過java/c等各種語言,可能因為年紀太輕,或是沒有特別的目標,所以沒有深刻的成就感,反而挫折感很重...。python是我真正入門的語言,主要是當時有實際的需求要實現,bash/matlab/fortran/c/python等很多的語言在抉擇,剛好周圍有其他朋友一起使用,最後選擇python。
    先說說我覺得python的好,在自學程式語言最困難的地方包含了環境建置與程式行為
    1. 剛好搭上python3+VScode的風潮,受益於vscode快速實踐python debugger的plugin確實幫助很大,很快地就能建置輕便且足夠使用的環境(針對功能性明確且簡單的項目,ex 定期備份資料)
    2. 受益於直譯器與debugger,透過vscode等ide直接運行code的時候,會很明確的high light錯誤位置與錯誤訊息,這時候可以提前打上中斷點,使程式停在bug發生前,再透過以下方法修正
    a. IDE如果有提供register/variable訊息,可以直接進行確認
    b. debugger的介入,藉由手動執行 "想要的code" 確認當前變數的狀態是否可以達到預期的行為,甚至同時規劃未來的步驟
    c. 恐怖的變數型態疊代(ex. a: int = 1; a: str = "1";) 這種神奇的操作是被允許的,大大簡化變數的早期規劃工作(當然這個是不好的...)
    3. 大量且方便的函數庫與友善的範例文檔,相信這個是自學程式語言的人最快獲得成就感的路線,配合上面的試錯,可以快速驗證自己的認知是否正確XD
    4. 呈上,這些函數庫也提供了 新手 ,(至少)標準的運行速度,可以不用在演算法上特別著墨
    5. 隨著docker的崛起,學會了虛擬部屬web microserivce的技能
    看到這裡,想信很多本科系的學生已經跳起來了...,我也是。隨著越來越廣泛的接觸這個環境,開始意識到自己的不足與挫折
    所以我要來說說我之後如何填坑...
    1. 利用leetcode 寫c,大概寫了前50題吧(對,不挑題,當遇到一個禮拜想不出解法,或是寫完之後效能太差的題目,都會再去拜讀大神們的解法) ,對,不是c++,因為沒有template,所以所有的事情都要自己做...,這段時間也逼迫自己概略性的瞭解指標的觀念,這時候也開始瞭解到python list elements/function args的行為為甚麼會是那樣
    > 1.1 後面有用過rust去寫題目,有std.{template}真的非常的開勳XD,但也會被自己恐怖的指標操作(rust: 借用&所有權)給搞到炸毛
    2. 開始學習手寫code,以前覺得這個行為超級白癡...。對不起,我是白癡!!
    這時候開始明顯的感受到python太慢了....,剛好golang的崛起,我也曾經嘗試過,但...恩不合拍,我也在思考有沒有其他的程式語言可以強迫自己矯正觀念(再寫c的時候,明確的發現,自己寫出來的code很恐怖,我相信懂得都懂...)
    剛好發現了rust,那時候好像才剛起步沒多久,我記得是v1剛初沒多久的事情,剛好rust標榜的特性是記憶體安全,我也就入坑了,但因為是自學,前前後後花了2年多才讀完他的doc,(期間也嘗試過直接寫code,想複製以前學python的流程,但不太可行)
    同時這段時間也在摸索stm32,也就利用rust 學習了embedded的基礎內容(專案需求)
    3. rust是位好老師,強迫我學了atomic(以前聽jserv老師的課程略有印象,但不懂為甚麼)、testing、typing、變數規劃、編譯期執行期差異、linker、trait(header)&impl、send&sync等racing問題的解法...許許多多的東西,雖然到現在仍然懵懂
    4. 為了更了解電腦的運行原理,我也嘗試寫了部分的chip8 emulator,以及硬件茶談描述的電路如何實現加法器,大概了解chip是怎麼工作的
    5. 為了知道float的行為(SSE),學了基礎的NASM,也開始明白了.bss 記憶體起始位置,等等的觀念
    6. 近期的google kickstart & APAC cloud hackathon讓我開始逼迫自己學習演算法
    整體來說,python可以讓一個菜鳥快速地獲得成就感(作品),但當有效能/擴展等更底層的需求的時候,就會顯著的體現出不足
    雖然到目前為止,我自認仍不到本科系大學畢業生的程度,即使是在rust上我仍是個菜鳥,但在這條路上過的是開心的,特別是學到新的東西的那一刻
    隨著基礎的增加,未來會想要再一次挑戰jserv老師的課程
    python就像是個引路的路燈,使我踏入了coding的叢林,讓我有機會發現其中的瑰寶;rust就像是位叢林中的原住民,教我如何在叢林生存,與我在叢林中開闢一條道路
    謝謝您願意花時間看到這裡~

    • @Kevin-fy4po
      @Kevin-fy4po 2 года назад

      感謝大大分享。

    • @ganyuuuuu9563
      @ganyuuuuu9563 2 года назад

      謝謝大大分享經驗

    • @yen_s_life
      @yen_s_life 2 года назад

    • @exinangai2216
      @exinangai2216 2 года назад +4

      好有心的分享,相信對許多初學Coding的人有參考價值。另外,推一本對演算法小白相當友善的入門書《啊哈!圖解演算法必學基礎》,碁基出版,作者:啊哈磊。連我這種時不時構想新算法的人看了都覺得耳目一新,感覺以前那堆經典演算法磚頭書實在是寫得差、解釋的方式很草率,容易令讀者看了不明所以,誤以為演算法都是些深奧晦澀的知識,望而卻步。

    • @peterlu4884
      @peterlu4884 2 года назад +2

      新手入門程式語言選擇越簡單越好,先累積點自己對程式設計邏輯的感覺,累積一點小作品會很有成就的。

  • @AK-di6xs
    @AK-di6xs 2 года назад +44

    要讓你從本質上喜歡python感覺有難度 畢竟你是經驗豐富的工程師了,但今天如果你是完全外行從0開始學,其他程式語言都一直撞牆的時候,python救了你一命,你一定會對python心存感激,就算長大後成為一個獨當一面的工程師後發現python有各種不同的缺點(執行速度天生就是比編譯式語言慢、比較不嚴謹等等等一堆問題),你還是會很感激python
    就有點像是小時候給國小老師教大,20年後你成為教授了看到當年的國小老師你應該不會覺得他很爛,還是會覺得心存感激吧,不知道這個比喻好不好。
    我個人就是被python救的人,沒有python,根本撞的頭破血流哪裡還有機會談後續甚麼哪個程式好不好,該從哪個學這種問題,連開始都開始不了。
    就像其他的大大說的一樣,每個工具有擅長處理的東西,看他優點,善用他優點就好,缺點如果一直去放大檢視會很痛苦XD

    • @As74ful
      @As74ful Год назад +7

      我就是那個被Python救的人 自學過java跟c++ 每次學完基礎觀念就開始撞牆 直到學python 中間幾乎沒有遇到很挫折的撞牆期 才激發了我對寫程式的熱情 而且後來回過頭在學java 感覺變得好簡單

    • @f43775668
      @f43775668 Год назад +3

      真的 從0的我 只有學python最好切入程式 之後再轉去學其他的都很有概念。之前硬去碰C語言整個無法理解,從0學程式的真的python是救星。

  • @CrBoyTW
    @CrBoyTW 2 года назад +29

    要講語法的話還是 Ruby 最棒了XD
    不過 Python 的縮排對任何一個有自我要求的程式設計師來說都不該是個問題。至少我自己寫 C、C++ 或 Java 甚至 JavaScript 的時候,也都會習慣隨手縮排好。沒排好我自己都會讀錯....

  • @今天比昨天厲害
    @今天比昨天厲害 2 года назад +47

    我是主觀的喜歡Python 但不會強迫每一個項目都要用python 客觀來講的話 每個語言有每個語言厲害的地方 做事情選對了工具 那就會事辦工倍 畢竟菜刀跟斧頭都可以用來砍樹 用菜刀來砍樹有點不適當 用斧頭來剁肉又有點跨張 哈哈哈!

  • @max47319
    @max47319 2 года назад +37

    因為長久和python相處,所以儘管知道它的缺點(速度慢、原生結構不足、type checking的問題 ...)
    ,我也很難去討厭他😅
    畢竟在爬蟲、ML、web testing領域,它的確滿好用的,
    可能我比較openmind,認為每個語言各有所長,
    而且它語法簡單易懂的優點,我覺得對工程師的頭髮和生命都有良好的影響XD
    (Life is short, I use python)
    至於indentation和underscore的問題,我是沒被困擾過,
    tab是個好東西,寫python隨時tab一下,就跟寫Java/C隨時semicolon一下的道理基本上是一樣的,習慣了就好。
    underscore(snake case)就是它的特性,就像蛇一樣挺酷的,
    可能自己還太弱沒有遇過被它混淆的情況🤣

    • @hara4565
      @hara4565 2 года назад

      長久了好奇問一下用什麼Linter~

    • @max47319
      @max47319 2 года назад

      pylint, flake8 看情況用

  • @radio0529
    @radio0529 2 года назад +58

    「先學python會讓基礎沒打好」
    很多時候,我們需要的是「入門級解決問題方案」,而非「學院派的一卡車原理」
    「我今天想要烤一個布丁自己吃」跟「我想要了解烤布丁的所有化學反應,以及所有食品添加劑的功能」
    如果只是為了解決短期的問題,先學習python貞的方便很多

    • @xerioayang3892
      @xerioayang3892 2 года назад +20

      如果要拿烤布丁比喻的話,我覺得py比較像是已經預處理過的食材,就等你放進模子裡烤
      可以吃,味道不錯,但如果把雞蛋跟牛奶放到你面前,你永遠不知道怎麼處理
      牛奶要煮到什麼程度?不知道,因為py幫你煮過了
      鮮奶油怎麼做?不知道,因為py幫你打發好了
      如果只是自己吃,那當然沒問題
      但如果是想要精進到至少會自己動手做,那py確實沒辦法打基礎
      剩下的就是看老闆想吃哪種烤布丁了
      至於你說的烤布丁的化學反應什麼的,那應該已經進入組合語言或計算機組織的部分了

    • @eric_asa_c
      @eric_asa_c 2 года назад

      他說認真想學寫程式的人
      這些人應該不是只有寫寫普通的競賽題 或是跑一些運算或是模型學習等單一功能的事情(當然這些數據科學也不簡單)
      反而可能是Java的類別功能來做出大型專案 數據庫等用到SQL的類C指令 或是Rust等特化功能來輔助程式記憶體安全性的
      Python 比起其他程式 只能解決比較單一的問題 不太具有物件導向程式語言拓展性 還有直接執行檔的問題(一樣 不否認例如數據處理或是深度學習等比較單一工作的方便性)
      自然在應用程式開發或是其他領域比較不推薦
      因為他少太多其他人需要且熟練的東西了

    • @eric_asa_c
      @eric_asa_c 2 года назад

      @@xerioayang3892 這學期的人工智慧概論一直用python 然後import 就做完許多模型建立 訓練和分析了
      真的挺方便的
      真的不敢想像如果老師要我們用C或是Java再造輪子要怎麼寫

  • @fragiledream
    @fragiledream 2 года назад +16

    我寫過幾年的 C, C++, Java, Python,目前從事機器學習研究,主要使用 Python 開發超過 5 年。
    1. 空格在 IDE 上面打 tab 就可以搞定了,設定 tab=4 spaces 之後只要看縮排就好根本不用去數空格數。真的不放心還可以去裝 rainbow indent 去對齊。至於縮排和括號哪個比較容易出錯,我寫過幾年的 C, C++, Java, Python 感覺是差不多。你的難關是你平常 coding 不手動調整程式碼縮排,所以無法靠 IDE auto-formatting 搞定,這可能只能花時間去習慣。對我來說,少掉那些括號真的讓我覺得程式碼看起來很簡潔。
    2. 底線只是 coding convention,這東西各種語言都有,沒道理在 Python 就特別是個問題吧?如果你在別的語言不遵守也不會怎樣,那你在 Python 也是一樣。
    3. 動態型別讓程式碼變得簡潔,所以 Python 早期很適合寫 scripts,但後來大家開始用來開發大型軟體以後,就會遇到難以辨識型別的工程問題。這問題可以用 IDE 解決,利用文件的型別標註來推導,如果沒有文件也可以用 Python 3.6 以後出的 typing 語法或是註解來推導。總之,我現在寫一些比較複雜的程式碼就會標滿型別,在開發期檢查已經完全夠用。如果做好這個,型別推導就不是問題吧。
    4. 我也覺得 Python 的測試不怎麼好寫,但我推薦你可以試試 pytest,這個比 unittest 好寫很多。

    • @kodeplay_untyped
      @kodeplay_untyped  2 года назад +2

      學到了👀 甘蝦

    • @kodeplay_untyped
      @kodeplay_untyped  2 года назад

      可是底線不單純是convention的樣子🤔

    • @吳承祐-o5o
      @吳承祐-o5o 2 года назад

      一個資工本科正常的經歷,大一學C/C++,大二學Java,之後python自學,上課都是直接機器學習的課。

    • @432v01
      @432v01 2 года назад

      底線不見得只是convention
      例如寫class的運算子多載就是一堆強制前後雙底線的固定名稱(例如加法是__add__),底線不寫或數量寫錯跑起來直接GG

    • @yli8888
      @yli8888 6 месяцев назад

      试一试用copilot 写测试代码,你会有天亮了的感觉😊

  • @AllenKuokwyshell
    @AllenKuokwyshell 2 года назад +15

    對於一個在這個領域打混很久的我來說,第一次用python是拿他來取代perl。老人們總拿shell script, awt 與 perl 來寫script程式。那個年代java大行其道,加上自己又以做JVM為主要工作,常常在想是不是有個語言能當腳本語言又能類似java那樣powerful,於是python剛好補足了這一塊。個人覺得python的最大罩門真的是速度。真的非常的慢。為了加快效率自己必須必須搞ctypes 與 cython 來增快執行效能。之後,越來越多的native, c++ 等等必須被projection 到python中來使用。深深覺得本末倒置也異常辛苦。花太多時間在處理interpreter之間的資料交換是非常不值得的。
    Python 最大優勢,在我看來除了語言本身容易使用外,有一大堆人花了一堆苦心把各種Libraries projection 到python的組成之中,讓你用得很開心。我想這反而是python最大的優勢之一。比方輕輕鬆鬆運作webdriver。而且在微型架構上,也有micropython等成員。是不是很像當初.net CF 與 java J2ME/MIDP 一樣呢!我想python真的適合當作輕鬆用與引入Coding之門的語言。以前我很愛用Lua,但是說真的他沒有python這樣豐富的支援。或許對某些人來說 Golang更適合當入門語言。只是他名氣沒python大,但是他有個富爸爸。 另外,老一輩的人也很愛Pascal這個語言,過去Delphi也是很多人愛的語言之一。Lazarus 也還在繼續使用這個語言,而且他也能跨平台。不過可能只是個小眾市場。
    Python 真的不是很適合作為一個主要語言(不過這還得看你的工作項目)。除了效能外,在許多領域中,更適合作為協作與工具語言來輔助。ASM/C/C++還是我個人的三本柱。當你對程式有一定的熟稔後,我推薦學習C語言,因為這個語言將幫助你更理解硬體、軟體之間的交互作用。也能讓你學習到結構體、Memory、Address與CPU的運作。在此之後,要往C++或是rust走,都是非常輕鬆的。同時,熟用C語言也是跨足各種領域必須具備的能力。

    • @zhasilo
      @zhasilo 2 года назад +1

      說到 Perl,那真的是地獄語言,有些老手寫 Perl 真的很缺德,愛用菜鳥看不懂的寫法 XDDD 我有遇過把 Perl 寫成 APL 語言風格的人 ... 然而 Python 就沒有這問題

    • @johnlin7439
      @johnlin7439 2 года назад +1

      ASM 的問題是沒有標準的指令集,換到不同的 CPU,指令集就變了,程式要重整一遍
      (您知道這問題要怎麼解決嗎?)

    • @AllenKuokwyshell
      @AllenKuokwyshell 2 года назад +2

      @@johnlin7439 我想這個應該沒法可解。除非再把類似LLVM這樣的工具用在asm上。但是這樣依然無法解決問題。C/C++語言應該已經是這些設計的公約數了。由C翻譯成各自的ASM。反過來思考,目前主流x86, ARM與潛力股RISC-V也都用各自的玩法與不同的指令集。除了RISC-V是開放的,其他都有嚴格的授權限制。個人建議除了最必要的時候才使用組合語言或是gnu asm 這類inline的ASM來盡可能減少直接使用ASM,避免移植程式碼的難度。

  • @mfshiu
    @mfshiu 2 года назад +54

    1. 空白格不是都ide 在管理了?而且空白格不是為了整齊,是為了區塊,因此少了許多大括弧
    2. 底線是為了簡單區分公私,只是外表
    3. 容易誤用跟方便是兩面刃,只是Python 用了其中一面
    4. exe 執行檔只是Windows ,現今平台廣闊多種,ios,Mac, android,網站,Linux...
    Python 的字串處理超強,metaclass 彈性超大,你提到的都是雞毛蒜皮,建議你看effective python 這書,才能寫出pythonic 的真正Python, 領略其精髓。我還未提及幾乎無限的網路套件支援,總之Python 是一種絕對實務導向的語言,少了繁文縟節,面向網路程式開發,與JavaScript 有異曲同工之妙。一位從組合語言開始學習的老骨灰工程師,隨便寫寫。

    • @kit00001
      @kit00001 2 года назад +5

      其实头三个真的没必要说,個人喜好罷了,大多数语法上的东西ide都流畅处理了,不过type确实挺烦是真的,不想预防type的问题只想避开,exe打包也是个烦点,因为有些库是不能全平台的,要自己在virtual env分出来,但是库多了,也没啥大不了.但即便這個玩意兒有點煩,我還是很喜歡的.

    • @louislouis117228
      @louislouis117228 2 года назад

    • @吕华方
      @吕华方 2 года назад

      我觉得javascript写起来比python舒服很多,我比较喜欢用大括号或begin end来划分代码块,不喜欢用:和缩进来区分,还有不是什么时候都能用ide的,如果你因为多了或少了一个缩进字符(空格或制表符)导致解释器看不懂你在写什么了然后就要去改是真的很草,还有python它不能多线程啊(谁让它用的自动引用计数作为主要的堆内存管理方法),还有其实像python采用的面向对象(oop)编程范式并不够灵活,像go那样的用组合代替继承才灵活,那样才能从根本上解决问题,如果要限制灵活度可以参考rust或julia那种基于继承的组合

    • @mfshiu
      @mfshiu 2 года назад +1

      @@吕华方 python有多线程啊,JavaScript才不能吧

    • @lienjerry7370
      @lienjerry7370 2 года назад +1

      @@mfshiu 我是 pythoner,但我還是要提到 global interpreter lock的存在。它讓python 沒辦法真的使用真的多線程

  • @peterleetcode
    @peterleetcode 2 года назад +24

    Python縮排我都直接用tab,所以比較不會有這個問題,而且有縮排問題Pycharm也會直接標示出來,Runtime才會發現的一些type問題的話,確實是有點討厭。

  • @user-cf3km9xs3v
    @user-cf3km9xs3v 2 года назад +4

    寫程式的5個基礎觀點:
    1.程式撰寫員其實是像造物者一樣
    2.每一筆資料就是物體,存在不同維度的時空.
    3.物件有靜態結構,動態行為狀態關係-與其他物件的互動,這些關係用運算元來代表
    4.並且還有一個觀點是這些codes 最終使用者的觀點-像看電影的觀眾.
    5.在程式的時空裡,程式撰寫員就像造物者創造數不清的維度!
    6.最後還有一個觀點是程式編譯工具的規則,這些規則約束了程式撰寫員的創造的時空維度的形態.

  • @Steven-pn9sx
    @Steven-pn9sx 2 года назад +22

    事實上資料科學家、機器學習工程師(神奇寶貝訓練大師?),在寫程式思維和一般工程師真的不太一樣,除了很吃重數學與演算法外,通常也非常要求計算性能,但即使要求性能的情況下他們通常仍然會選擇python,在這點上其實就很有趣了,這表明他們寫的程式事實上性能並不慢,甚至可以說性能相當的好,然而為什麼他們寫的python會沒有性能問題呢?我想這應該能歸功於數學與向量化思維,事實上數學統計(不限定於統計)方面的操作都相當耗費計算資源,那麼要怎麼加速這樣的運算過程呢?這就要靠後者向量化的思維,你可以簡單想成向量化就是批次化的概念,而且通常比起一般工程師常見一個個row迭代的思維,向量化後的介面通常都是以column為單位批次計算,這樣做當然是會有好處,如果你想了解會有哪些好處,可以往怎麼加速運算下去鑽研,你會發現運算加速的方法除了演算法與cpu平行運算以外,還有所謂CPU SIMD、Cache Friendly、GPU等議題或方法,而這些方法通常都是能使用C或C++等方法下去實現,然後再包裝成python的介面給python使用者使用,這也是為什麼這些資料科學家或者機器學習工程師的程式跑得快的原因。所以憑良心講,對這群資料科學家與機器學習工程師而言,這種寫起來又快(不管是實作速度或者執行期性能)、操作能動態靈活、不需要寫型別但又能具備良好的可讀性,這種語言沒道理不愛它吧?

    • @mfshiu
      @mfshiu 2 года назад +2

      認同,演算法的正確性比硬拼時脈重要多了

    • @吕华方
      @吕华方 2 года назад +2

      手动vectorization其实是很麻烦的一件事,而且向量化以后内存占用会变大,而且某些时候还不如在c/cpp里面用循环写的效率高(编译器可以做出很激进的优化),没错,python就是这样一门胶水语言,用来调用其它语言写好的库,如果用pure python去解决这些问题,那么效率问题是无解的

    • @wonderwonder9428
      @wonderwonder9428 2 года назад +5

      因為他們在性能瓶頸用C,C++ 寫成.dll, .so ...
      再用Python去呼叫執行,相當於讓Python不參與需求性能的運算
      簡單講,Python躺平,C來扛

  • @have-bear
    @have-bear 2 года назад +8

    學一個程式語言最重要的是學習他的核心精神
    python 的核心精神是「簡潔性」
    python 利用空白定義區塊是因為它注重排版與可讀性
    python 沒有區塊變數是因為它認為一個函式的任務應該單純,如果需要區塊變數你應該把它拆解成另一個函式
    python 沒有型別是因為它注重物件的行為而非種類,而雙底線函式就是用來改寫這些行為的魔法,也因此 python 可以直接當作 DSL 來用
    這些語言特性同時也有他的缺點
    python 的強迫排版對於有 formatter 的情況下根本不必要,反而還使得有時寫/思考程式邏輯時必須注意排版
    python 沒有區塊變數讓變數污染變得無法避免,而這在構造封包 (closure) 時尤其詭異
    python 很明顯後悔了沒有型別這件事,沒有型別根本沒辦法用 linter 除錯,但這就和 python 可以改寫所有行為這個特性非常不合,也因此 python 的 typing 直到現在 (3.10) 都還是無法符合我的需求
    總結來說我也漸漸的不喜歡 python,但和你的理由都不同
    我也意識到寫 python 會越來越笨這件事(最主要是沒有型別的問題)
    但作為一個易用的 scripting language,目前還沒有可以超越它的語言 (TypeScript 或許可以)

    • @JeffchenYuting
      @JeffchenYuting 2 года назад

      Now this is a nice argument!

    • @吕华方
      @吕华方 2 года назад

      变量污染这个是真的草,python中要强制限定变量类型真就很困难呗(谁让它一开始完全排斥此种做法)

  • @billchen8113
    @billchen8113 2 года назад +2

    1. vscode 設定 Tab 鍵 替換成 四個空格就解決了
    2. Vscode 反白會用 dot 表示空格(也和 [原本的]tab 有所區隔)
    3. 可以以只在 Call function 時用 Python Typing 確認 argument's type,有需要也可以在執行程式前 先 額外執行 python typing check

  • @ken6145
    @ken6145 2 года назад +14

    understand your pain points here. I have been using python for around 2 years. I can say that you need to fully setup your environment (include mypy, pylint) in order to be fully productive but it still takes some getting used to lol. Also, unit tests with 100% coverage can help you catch many issues like the unmatched types. In addition, if you use python on leetcode or other programming contexts, not being necessary to specify types in python actually saves you tons of time during context and python offers a lot of useful libraries as well like math and itertools.

  • @黃書庭-e8w
    @黃書庭-e8w Год назад +7

    我個人認為indentation是優點而非缺點,當要把很多行code塞進一個block裡面的時候,只要選取起來然後ctrl+]即可。這在其他程式語言就沒這麼方便就是了

  • @terrencewong894
    @terrencewong894 2 года назад +86

    喜不喜歡是主觀,最後一點就不同意了,我一開始也是打算學Java,但真的對於零基礎的人來說,真的不簡單。python就不同了,快速上手,有成就感,提高學習動力。每一種語言都有缺點的,與其放大缺點,還不如利用優點。

    • @Kevin-fy4po
      @Kevin-fy4po 2 года назад +2

      感謝大大分享。

    • @yuijzeon8872
      @yuijzeon8872 2 года назад +3

      零基礎 JS 或 C# (dotnet 6 之後有minimal api) 都能蠻快上手的吧

    • @yuijzeon8872
      @yuijzeon8872 2 года назад +2

      我自己也是比較不喜歡 py 的那一派 XD

    • @吕华方
      @吕华方 2 года назад +2

      我学的第一门语言就是java,我倒是觉得没什么难的地方

    • @吕华方
      @吕华方 2 года назад +3

      @@yuijzeon8872 我是属于非常不喜欢python设计的那一类人,我希望我能不要再看见它

  • @henry5405
    @henry5405 2 года назад +44

    接觸Python大概是4~5年前來美國才開始接觸到現在工作也在用
    但我真的慶幸我第一個程式語言是Java
    當初Python剛紅起來時, 我就覺得空白這問題很惱人
    Python雖然方便, 但就是整個語言很不嚴謹
    而且真的會讓新手或使用者越用越笨的感覺
    因為很方便的省略一些type, datastructure以及宣告的東西
    有些人可能只知道list但不知道, array有靜態跟動態
    還有全域變數是什麼...Python真的省略太多基礎的東西了
    我常常都跟我一些剛接觸寫程式的朋友說, 如果真的要選一個語言當起點
    千萬別選Python

    • @johnwang2196
      @johnwang2196 2 года назад +1

      沒使用過除了python以外的程式語言,想請教全域變數不是在python裡也有嗎 那是跟其他程式語言有什麼不同嗎

    • @henry5405
      @henry5405 2 года назад +7

      @@johnwang2196 有的 Python也有, 抱歉例子沒舉好也沒講清楚, 因為Python沒有特別的宣告過程, 所以一般可能用賦予值的方式做宣告, 但沒注意的話 如果全域變數跟區域變數命名一樣的話會相互影響值 但其他語言像是Java他是可以全域跟區域命名一樣, 但呼叫時特別指定哪個值, 就有明確的一些規範避免出了bug找不到問題在哪

    • @handsome616
      @handsome616 2 года назад +1

      空白真的很煩

    • @johnwang2196
      @johnwang2196 2 года назад +2

      @@henry5405 謝謝你的回答,這樣聽起來真的感覺python在這塊真的省略蠻多的,而且學到的也是不鼓勵使用全域變數😂

    • @吕华方
      @吕华方 2 года назад +1

      @@henry5405 说白了就是python里我根本看不出来它访问的是全局变量还是局部变量,看不出作用域,它的作用域也是很奇葩的,循环里面声明(即第一次使用)的变量在循环外还能继续用

  • @LaoZhao11
    @LaoZhao11 2 года назад +20

    1. 空白格完全不在我思考範圍,話說固定縮排是寫程式很基本的
    2. 底線這就見仁見智
    3. Type我還好,python2 不是utf-8才是我最煩的
    4. Python還是屬server端,不太是給user直接使用,exe只能跑在windows,只能說python對windows 比較不友善
    5. 測試算是蠻方便的
    唯一討厭點,就是跑起來真的太慢,後續優化得花很多功夫
    不過我很推薦新手先學python的,
    畢竟這圈子,靠的是喜歡才學得深入
    如果一開始就碰到艱澀的語言
    反而受眾太少
    btw 不要只會python就說會寫寫程式,至少要1個動態+1個靜態語言,這樣才能對於工具的選擇有合理的判斷

    • @盛夏夜未眠
      @盛夏夜未眠 2 года назад +3

      縮排真的很重要,我交接過一個前人寫的專案,很神奇的該縮排不縮排,不該縮排的縮排,或是看心情縮排,一部分4個空白縮排,一部分2個空白,一部分tab,然後又喜歡幾千行塞一個function。有天為了修這個案子的bug,重新整理完縮排後才發現疑似是沒有好好縮排,有幾行程式錯誤的放在 { } 外(C語言),更要命的是在整理縮排的期間看到了更多的bug疑似都是縮排問題放錯了位置。
      我現在交接或是幫忙別人解決程式時,面對不正確縮排的程式已經充滿恐懼了 ...
      Python的文字編碼問題確實很煩,我之前寫了一個網路爬蟲自己在家抓資料用的,有時會是簡體中文或是其他非英語的資料,用Python做資料處理的時候都變亂碼了,看了網路教學試了好久的encode UTF-8、decode UTF-8一樣亂碼。VB.NET就沒這麼難搞,真的弄到快昏倒了。

    • @吕华方
      @吕华方 2 года назад

      @@盛夏夜未眠 其实除了编码问题以外还有可能是字体问题,有些字体不支持汉字字符,不过它那个用:和缩进划分代码块的设计是真**

    • @and9527
      @and9527 6 месяцев назад

      現在都有像petter自動排版哪有需要自己花時間縮排 所有括弧的語言都可以自動format
      搞那個縮排真是浪費時間

  • @地地-x4m
    @地地-x4m 2 года назад +4

    Python護航大使來了 Like按下去都給我戰起來
    2:13
    這就是為了解決coding style的問題而產生的好處啊 (前提請先搞懂linter跟formater)
    連Python PEP懶得讀的人請轉彎 因為你自我中心只想到效率(PR99的人請無視)
    但事實是這世界上需要更多能夠維護跟可讀性高的語言
    懶得爬文的話直接用Black
    4:09
    我也覺得以一個語言做這麼detail的設計不是很好讀
    java跟php的private, protected class也一樣要記一堆差不多啦
    雖然我是習慣了啦
    7:00
    Docker時代了別再拘泥EXE了吧, Linux這麼多distribution怎麼搞啊
    語言只是工具 每個語言都有自己特性 世界上沒有最好的語言

    • @franktung4139
      @franktung4139 2 года назад

      她就是個活在自我中心的 奇葩工程師 然後又只能在新創公司跳來跳去 他要去大公司還沒人敢收吧

  • @edchang
    @edchang 2 года назад +11

    Python 真正致命的缺點只有 performance (and GUI support?)。其他場合 Python 寫起來非常快,光省略不必要的括號什麼的,加上 list comprehensions, 效率提升不是一個等級。Python 的 unittest / mock 更是他一大優點,其他語言需要嚴謹設計的場合 mock 可以粗暴的取代,對於小專案而言神級的好使用。

    • @unilee0109
      @unilee0109 2 года назад

      我男友也是python的受惠者,他靠它搞定了很多厲害的專案

  • @hackaniceday
    @hackaniceday 2 года назад +3

    喜歡這個影片,這種源自開發經驗的分享比較有參考價值。

  • @yojaychang
    @yojaychang 2 года назад

    學習程式語言首推Java, 原因如下:
    IDE非常豐富,而有免費及功能強大(功能強大到列不完,只摘錄重點:自動排版,支援重構(程式片段抽成函式,甚至可自動將相似的重複碼,全替換並抽成共用函式避免程式碼的重複,反向操作也可以,重構還有很多功能不一一列舉),除錯,測試套件,快速追查宣告地方如函式宣告,變數宣告等,追查函式被哪幾個地方呼叫到(呼叫堆疊),類別堆疊,例外處理技術成熟,自動匯入(套件import),程式快速修正,自動產生碼(例如hashcode(), equals()等等))。
    語法通俗,有C Like經驗的人,可很快上手。
    可將程式註解直接生成說明文件(對討厭寫文件的工程師來說可說是一舉兩得)。
    支援物件導向,但不代表一定要寫成物件導向(既可OO,又可無OO),心中有物件導向的人寫出來就會有物件導向,可從新手(還沒物件導向概念)用到變老手都適用。
    捨棄惱人的指標,並加入垃圾回收機制。
    支援多執行緒(針對寫後臺程式很重要的特性)
    可攜性高(跨平台,號稱write once, run anywhere)
    效能高(雖略遜於C語言,但比較沒有其他語言會有的效能瓶頸)
    很多人學習一個語言,覺得功能太多太強大,反而覺得很難學,這邊要釐清一個觀念,給了你一大箱工具箱不是要你一下子學會所有的工具,而是你手頭有很多工具可用,今天用到螺絲起子,你就到螺絲起子用法,明天用到鐵鎚,就學到鐵鎚,後天用到電鑽,就學到電鑽。
    而不是去挑選一個只有螺絲起子那麼簡單的工具箱,然後要把螺絲起子當鐵鎚跟電鑽用。
    另外,幫大家整理最重要的部分如下:
    01:48
    04:48
    (表情包XD)

  • @Quetalocatl
    @Quetalocatl 2 года назад +14

    其實有pyinstaller可以打包做exe,一般使用是沒有問題的。而且用Python的人好多都是Linux/Mac環境,本身就沒有打包exe的需要,加上Python其中一個好處就是不需要編譯。

    • @kakalin1026
      @kakalin1026 2 года назад +3

      沒錯 Pyinstaller 蠻好用的,寫 GUI 相關的話 PyQt/Qt 的打包也蠻方便的

  • @kevinlantw
    @kevinlantw 2 года назад +9

    Python本來是設計給一些需要寫程式幫助自已的工作,但又不需要太深入程式語言各種概念的人用的工具性質的東西,同質性的程式語言也不少。我對Python的看法就是,要用的時候再去學就可以的東西。我沒有需要用到,所以一直沒認真學過...
    然後為什麼沒有direct executable?很簡單,因為大部份需要用Python的人都沒什麼必要做一個exe出來... 大部份東西在我自已的電腦,自已的環境跑,有需要其他人share source code的人也都是自已可以處理執行環境的人。
    我自已寫了這麼久程式,初學入門的程式語言,真的要慎選... 設計上有條理的,夠嚴謹的程式語言不一定就會難學,現在網路上教學那麼多,什麼觀念不通,多看多練大概就過了。但是如果圖輕鬆去學一個寫起來「好像很隨意很輕鬆」的語言,之後如果職涯上遇到瓶頸(隨便舉例子,效能),那個轉換的代價跟比起當初多花一點時間弄懂相對比較難學的程式語言,可能是幾千幾萬倍...

    • @hsw1976
      @hsw1976 2 года назад

      如果是你所說的這種特性,那此語言的創始人就不該把程式碼的縮排規則搞成這樣。

  • @jijieishere
    @jijieishere 2 года назад +8

    空格反而沒什麼注意過欸 基本上按tab就解決
    而且寫其他語言的時候我也都一樣的tab模式
    完全沒有銜接的困讓
    我覺得最麻煩的是為了速度要用cython
    結果會突然要使用超多file整個很不想用

  • @haha9898988
    @haha9898988 Год назад

    在接觸了電路板工程師工作後發現自己對軟體工程這一塊有很大的興趣,但礙於非本科系之前也沒有相關經驗,無論是自學或去外面上課都無從下手,還好在茫茫大海中找到了"對啊我是工程師"這個YT頻道,連續看了好幾部影片從影片中獲得到了很大的資訊以及方向,果斷的訂閱頻道,這個頻道很有料!希望有一天自己也可以很驕傲地說出"對啊我是工程師"😄

  • @billchen0515
    @billchen0515 2 года назад +2

    我覺得妳寫程式的習慣改變一下,就會覺得python好用
    1.空白縮排,你改成用tab鍵縮排,好處是未來交接給別人或別人交接給你程式碼,你的頭不會很痛,因為至少一定規範其他人的整理好程式碼
    此外,測試後並想要修改程式碼,例如我想要迴圈裡面包的if想要換到迴圈外面,超級容易,不用管有沒有括弧包住或者有沒有分號包住
    2. 我用底線命名變數沒有碰到問題過,例如user_config或者User_之類的命名都沒問題
    3. 變數可以隨時轉換type,我覺得這點很方便,然後你覺得可以python還是有管type
    應該要反過來想,程式本來就會管變數的type,但是你「賦值」的同時,也已經相當於定義這變數暫時是甚麼type
    例如:X = "3" 有雙引號的東西就一定是string類別,X = ["3","2"] 有中括號的東西就是list類別
    Python就是幫你省下一行程式碼: X as string , X as list這一行而已
    4. exe,的確真的沒有,很爛,然後pyinstaller這套件也沒有很好,很容易幫你包了一堆你根本沒用到的套件到exe旁邊,或者漏放套件檔案,要手動調整,真的爛炸
    5. 你選好的IDE工具就能夠讓你簡單做測試,我是用spyder,它可以讓你有快捷鍵F9「單行執行程式碼」
    框選變數後按F9,也能夠馬上看目前變數的value是什麼
    以上是我的想法讓你參考,我從VBA→R→Python的,從R轉換到Python還滿順暢,因為兩者的使用習慣幾乎雷同

    • @吳承祐-o5o
      @吳承祐-o5o 2 года назад

      R不是只有老人在用嗎?上次看到還是一個要退休的老教授在用。

  • @paraminddual5685
    @paraminddual5685 2 года назад +1

    单元测试这个问题更是太适合python了,和刚刚说的一样,你需要使用其他工具来帮你,比如tmux + vim + nerdtree, 奇快无比,全键盘操作,当然这个需要你会配置组合工具。如果嫌麻烦,那直接写一个vim script函数来自动完成,我之前就做过这样的一个,不过还是用更好的nerdtree+vim+rope来替代了。初学者可以结合pycharm来完成

  • @Daniel-mv4zy
    @Daniel-mv4zy 3 месяца назад

    很實用的個人心得跟建議

  • @HenOOXX
    @HenOOXX 2 года назад +7

    不喜歡python +1,雖然不太一樣。我覺得python太多省略性的寫法,但這些寫法通常是本來就有其他程式語言經驗的人才會知道這個省略的意義,對新手來說這些省略反而會使邏輯混亂,難以理解它背後的意義。所以我都比較建議新手先學 Javascript,同樣是動態型別,也可以不用加分號,執行環境也超容易取得,有瀏覽器就可以了。好 JS,不學嗎?
    至於第一點空白格的部分我都用Tab鍵所以不用去數XD,而且我不管寫什麼語言都會遵照統一的縮排,即使那個語言沒有要求我一定要對齊我也會要求自己一定對齊 (為了易讀性)

  • @macywu4264
    @macywu4264 2 года назад +2

    Pyhon軟體工程師來簽到了。雖然是吃飯的傢伙,但老實講裡面提到的type,unit test跟底線問題我是有同感的。不過我不會因此就討厭Python,畢竟我用這麼幾年下來,它讓我快速地寫出需要的Protoype發了幾篇paper(畢竟支援的library很多啊!),然後又讓我能夠順利跳出學術圈,我對這個語言是感激但不到擁護。
    Python作為第一個學習的語言不算是壞事情,雖然會出現基礎不夠扎實的情況,但對於某些學習族群(對!我拉!)需要的是先不氣餒,然後再來擴增知識。再說,程式語言的基礎架構的概念是可以互通的,所以學會Python之後我再去學其他程式語言也沒有什麼很大的問題。
    偷偷說,對!我就是愛空格勝過分號... 這個喜好我講不出所以然來就是了。

    • @a12196935
      @a12196935 2 года назад

      我python學3個月學不起來 學得很辛苦 怎麼辦

    • @macywu4264
      @macywu4264 2 года назад +1

      @@a12196935 我的學法是先想一個想做的計畫,然後開始寫,邊寫邊學。做完一兩個計畫大概就把基本語法學完了。但是接下來就看是想做後台開發,資料分析,或軟體開發。我建議先走資料分析。

  • @user-cf3km9xs3v
    @user-cf3km9xs3v 2 года назад +4

    Python 之所以讓人為之驚艷是一種很快能把心中想的結構給寫出來,由上而下的,讓初學者重點放在結果而不是在一些語法細節!
    等到初學者已經習慣了自然就會主動積極去了解一些語法的程式的細節. 其他的語言比較由下而上強迫你要去把規則都弄清楚要不然根本跑不出結果.從這個觀點Python的作者真是天才.
    對於真正的程式高手見招拆招,照理說什麼語言都可以!

    • @zenei3854
      @zenei3854 2 года назад

      大推最後一句,最重要的真的是融會貫通,就有辦法見招拆招

  • @walao81
    @walao81 2 года назад +2

    我只有在用notepad寫的時候煩惱過空格問題,sublime 根本超棒 XD
    我的“母語”是 Java,從唸書開始到工作差不多6-7年有了。後來在 google 第一版 app engine 只support python的時候咬牙換跑道了(因為窮想要免費的host XD)。
    坦白說 OOP 確實是Java把我訓練起來的,如果一開始就用Python可能不會一直自學到Design pattern。
    但是比起Java這種萬物皆 Framework 的風格,Python這種直接面對問題的方式我實在太喜歡了,光是一個 open file read lines 就能說明很多問題。
    我寫code是為了解決問題的,read lines 能套用 pipeline 變得多flexible 我一點都不在乎好嗎 XDDDD

    • @sumonechan8514
      @sumonechan8514 2 года назад

      和你一樣
      Java就像隸書...一筆一劃都要整整齊齊
      Python就像草書...
      每天寫上萬字還要寫隸書真的會瘋

  • @elvisxu8631
    @elvisxu8631 2 года назад

    能看到最后,大多也都是跟你同感的,我也是尽力想爱上py,但是,凡事都有但是,但是啥尼,你已经帮忙总结的很到位了!后来觉悟了,它就是个脚本语言,跟 shell 一样的,注定只能做我的小工具😂

  • @gn01642884
    @gn01642884 2 года назад +4

    pyinstaller做出來的執行檔有時候會被判斷成病毒
    py2exe複雜到不行... 沒有tool 去config+一大堆插件的話根本就是天書
    還有python沒有真實意義的"private"概念

  • @吳晉安-u9v
    @吳晉安-u9v 2 года назад +20

    我是只有使用python 的工程師,影片的問題我是比較沒有遇到,但是真的要說exe大概是最大的死穴,每次做完案子轉成exe都要克服很複雜的問題,然後還跑很慢

    • @nijason7789
      @nijason7789 2 года назад

      包起來超胖

    • @紫月-o8u
      @紫月-o8u 2 года назад

      用anaconda轉的話真的超肥 如果python是直接裝在系統上就還好

    • @Lambert7699
      @Lambert7699 2 года назад

      可以用cython提升速度, pyinstaller打包exe,其中引用是很關鍵的一點, 別胡亂引用,或引用整個library, 只引用真正有用到的Method就好;說這麼多,你寫exe的話用其他語言更快。 哈哈

  • @mumk
    @mumk 8 месяцев назад

    很好的抱怨,蛮赞同的!

  • @user-os8wb5ou1y
    @user-os8wb5ou1y 2 года назад +11

    如果在意有沒有講對的話,說 Python 省略很多東西大概是很不公平的。
    因為習慣靜態、編譯的語言就說動態的語言學起來基礎會不好其實是很沒道理的。
    其他都不看,假設你寫 OO 那你會不會SOLID 原則跟型別有關係嗎?其實是沒有的。
    何況 Python 社群/風氣上 其實對於資料科學的各種基礎還是很重視的。
    我的感覺是你拿來玩過一下,不習慣,然後就拿出來罵他,是蠻沒有道理的。
    Python 就是慢,但除此之外真的算不上什麼缺點。
    相反來說從 Python 入門去學習演算法,學物件導向甚至系統設計都是很好的,針對這些用途不推薦的點,除了不喜歡之外還有嗎?
    抱歉因為影片最後說覺得自己講的對不對很重要,所以我想還是留個言討論討論。

    • @user-xj2yv7uk6h
      @user-xj2yv7uk6h 2 года назад +1

      python 其實是強型別的只是是動態的

    • @user-os8wb5ou1y
      @user-os8wb5ou1y 2 года назад

      對 我講錯了 謝謝

    • @吕华方
      @吕华方 2 года назад

      用它来解释面向对象我觉得会有些困难,因为它不能限定变量类型,所以就算没有继承关系我依然可以把它往里面塞

    • @吕华方
      @吕华方 2 года назад

      @@user-xj2yv7uk6h 动态强类型这种组合挺奇怪的,会导致一些看起来莫名其妙的问题,比如你期望它给你进行implicit的type conversion结果它并没有进行,这导致你需要进行类型转换的时候你需要写得很explicit,但是类型声明这种东西却又是完全不重要的

  • @ueiro84
    @ueiro84 2 года назад +3

    Python在scientific computing 領域還是很好用的!很多公司如果不想嘪Matlab,就用python !
    還有快慢的問題:python 本身是慢,但是只要懂得怎麼vectorize你的operation (avoid for loop) 再加上Numpy, 基本上速度跟其他compiled languages 差不多!
    我自己曾經用python 寫了一個bundle adjustment 的optimizer, 可以在1分鐘內optimize 一百多萬個unknown variable!重點是我的電腦cpu是一個gen5 的省電型i7

    • @吕华方
      @吕华方 2 года назад

      julia不香吗,如果你研究的是前沿领域的话julia它还是很好用的

  • @test38728
    @test38728 2 года назад +7

    第一點還蠻無言的,簡單來說,如果你的世界只有你一個工程師,那換行後開頭的空白排版確實是多餘,有些工程師甚至喜歡好幾個java code 分號隔開擠在同一行,作好排版是讓同事間交叉維護程式碼的禮貌

    • @dick90012000
      @dick90012000 2 года назад

      我猜他想表達的是其他程式語言大多是使用大括號之類的符號作為區隔,所以即使個人排版習慣再差,都有很多IDE支援一鍵自動排版,但python不行呀,你排哪就是哪,一旦層數多了,都搞不清楚應該擺在第幾層才是對的,數錯就bye了。

    • @n7822123
      @n7822123 2 года назад

      一個合格的工程師是盡量避免寫 巢狀 If or For
      如果真的需要多層,那麼,包成另一個涵式改用呼叫的方式,是更佳的選擇

  • @hkpeng329
    @hkpeng329 2 года назад

    你這畫面 我第一眼 就是看上那 "箴言" ~ 這棒棒的置入給你100分!! =_=+ 認識耶和華是智慧的開端~

  • @義閔黃
    @義閔黃 2 года назад +2

    哈哈一開始學python 也是遇到空白格很不習慣,不過寫多了就慢慢接受了!不過目前主力還是c#,python只能看情境當作第二語言使用

  • @ChiaXinLin
    @ChiaXinLin 2 года назад +9

    動態類別 也是我一開始非常非常困擾的特性耶!~~ 最常出現append 的時候發現他不是 list,concat 兩個 var 的時候告訴我list 不能跟 str 相加 !~~

    • @吕华方
      @吕华方 2 года назад

      其实动态类型也不一定就看不出类型,julia就是有静态语法(可选)的动态强类型语言

    • @吕华方
      @吕华方 2 года назад +1

      这个不是因为动态类型,是因为它是强类型语言,像JavaScript这种动态弱类型语言就不会有这种问题,它会自动进行隐式类型转换

    • @朋也-peng
      @朋也-peng 2 года назад

      動態類型配強語言很多時候真的不是很方便,還不如靜態類型配強語言至少debug上麻煩比較少

  • @winner34567
    @winner34567 2 года назад +1

    說得好,讚!

  • @JadeChest
    @JadeChest 2 года назад +1

    我有两年的python经验,Java, C, 以前都用过。Python是最舒服的,它确实慢了,但看着是最简洁,module也很多。你说的indentation这个问题,我觉得数分号和各种大括号,比看indentation晕多了。下划线的问题在于python没有实际的private和protect。实际上如果学的时候理解内存管理,你会发现这些语言很多概念都是相通的。

  • @pokaichen
    @pokaichen 2 года назад +15

    講空白格這部分真的很詭異,有programmer會真的去數空白格?不都是用tab?
    初學者學Python會讓基底不夠扎實,這觀點是很奇怪的。如果基底要扎實,所有人都要從assembly language開始學才對,register、opcode這些都要懂。
    實務上,9成以上的學生學程式都是掛掉的,有學等於沒學,所以對初學者最重要的一件事是"簡單"不是"扎實",不是先學一些用不到的"基底"。而真的Python學到能夠運用自如的人,多學任何語言也不會有問題。試想,如果一個人一開始就學C++可以學得起來,但若讓他先學Python再多學C++就學不起來了,有沒有覺得很荒謬?
    如Google、Facebook擁有最頂尖工程師的公司,選擇Python這種低效能語言是有原因的,因為他們深知人的效率損失遠大於電腦的效率損失,一個能夠提高工程師效率的語言,才是最好的語言。即使AI這種極度要求效能的應用,還是以Python為主,因為方便人類快速實作才是最有價值的,只要在少部分核心最重視效能的部分,用C++去做就好了。

    • @Teo-zr8me
      @Teo-zr8me 2 года назад

      正解,如果說运行速度慢,對大公司來説不是問題,超級電腦什麽的都能解決,快速上手,簡潔,提高工程師效率才是最重要的。

    • @kakalin1026
      @kakalin1026 2 года назад +2

      我也是在想這問題,不是都用 tab 嗎?

    • @蕭仁鴻-i9t
      @蕭仁鴻-i9t 2 года назад +2

      Tab在不同編譯器格數會不同⋯⋯
      舉例colab > 2格、vi > 6格、 vs > 4格

    • @pokaichen
      @pokaichen 2 года назад

      @@蕭仁鴻-i9t 那又影響了什麼?真的在寫程式的人都是按"一個tab",要增要刪都是一個按鈕而已,沒有人會去按空白鍵阿! 莫非作者連這都不懂!

    • @As74ful
      @As74ful 2 года назад

      其實還蠻多人習慣按4個空白鍵的...

  • @ericlin9087
    @ericlin9087 2 года назад +10

    對於一位軟體測試工程師來說,python 相對是比較好用的語言,原因在於測試工程師不像開發工程師,有相對較扎實的基礎,做測試的人也是各種背景都有,所以在這種情況下,相對用 python 來做教學,或是快速產出一個 automation tool 是方便的
    目前至少我是都用 python 來做事,甚至拿 python 做成產生測資的 web api server 😂

    • @吳承祐-o5o
      @吳承祐-o5o 2 года назад

      換個說法應該是只需要用到python

    • @ericlin9087
      @ericlin9087 2 года назад

      @@吳承祐-o5o 測試工程師不一定只有用到python喔,也是會需要shell script、Swift、Java、JS等等,要看你測的是什麼,只是python比較好上手而已

  • @kartg0003618
    @kartg0003618 2 года назад +5

    不強制指定 type 真的是維護專案時的極大隱患 一不小心就帶錯 type 或誤用 還不一定能在一時半刻檢查出來 省寫 type 的時間只是拿來 debug 而已

    • @Mrlittleyang123
      @Mrlittleyang123 2 года назад

      可能是為了方便吧?

    • @吕华方
      @吕华方 2 года назад

      @@Mrlittleyang123 其实这只是因为它是典型的动态类型语言,所以就按照传统这样设计了,静态类型语言也可以不写类型的,有自动类型推断

  • @hkpeng329
    @hkpeng329 2 года назад +7

    Python 在我眼中就是一個邪門歪道的存在 XDD 語法簡單到我認為他怎麼可以這種語法結構?! 程式就是該要有怎樣的結構啊(我Java底的...)!!! XDDD 但是我能夠理解為什麼很多的大學教授會很推這語言,因為他語法簡單,容易讓新手上手,不會因為繁雜的寫法退縮。但是... 這語法結構 不ok!!! XDDD 不符合我寫程式的意識形態!! XDD

    • @oliiz7165
      @oliiz7165 6 месяцев назад

      清朝的時候義和團也覺得洋槍洋炮是邪魔歪道,繼續不與時俱進沒關係

  • @chencyu
    @chencyu 2 года назад

    IDE 或 Editor直接設置成 按一個Tab ==> 轉換為 4個空白,比較容易避免按錯空白數,因為按的都是「縮排數」
    並盡可能使其自動縮排,避免手動按
     
    我個人不會選擇寫完code才來用linter進行排版
    撰寫過程中隨時保持排版可以維持自己當下的邏輯思維清晰
    所以第一點提到的多或少空格,對我而言從一開始就不會發生
     
    以此為前提的話,不管是Python用縮排區分block或是其他語言用{}區分block就沒有太大的差別
    當然每個人的思考模式不盡相同,確實有的人是一通到底的寫完再去縮排會比較流暢,這也只能說是跟Python八字不合了XD
     
    第二點的type問題
    因為Python設計之初的定位其實是介於 script 與 program 之間,本來並不會被用做中型甚至大型的專案
    但卻因為簡單好寫的特性被許多有快速開發需求的公司拿去做不合其定位的應用,而後Python才因應這些需求做出更新調整
    (也就是中型以上專案勢必要嚴格管控type而增加了type hint的功能)
     
    第三點direct executable
    跟第二點的原因相同,設計之初就是介於script與program之間,初衷與現今廣泛應用已經不同
     
     
    現今Python被認為是「缺點」的問題,其實是因為Python的應用已經偏離了本來的設計初衷
    bash、cmd 等是用來 「操作 executable binary 的 script」
    而Python最原本是被用來 「操作 library 的 script」 (而library可以是由C、Java...etc寫後編譯成的)
    其實是做為各種語言的膠水來使用
     
     
    個人的一些看法與觀點,有錯的話也感謝指正

  • @benjclee
    @benjclee 2 года назад

    內容很好。
    提個小建議,影片有內嵌字幕的話,外掛字幕可以關一下,這樣比較不會煩到平時需要開字幕的聽障人士。

  • @Usersdfcfhb
    @Usersdfcfhb 2 года назад +7

    空格那部分用softtab 就好, dynamically typed 是校適合初學者。没direct executable 真的很頭痛。但Linux Mac 還是可接受。
    debug 的話,用Jupyter notebook 就很好做。
    但是這些問題go Language 都没有。
    Go language 真的神
    我再也回不去C++了

    • @吕华方
      @吕华方 2 года назад

      我觉得像java这种静态语法的动态强类型语言更适合初学者,你表达你的想法的时候本来就需要时刻注意类型,如果用python你就很容易忽略类型然后就很容易出错

  • @blue-brother-e2k
    @blue-brother-e2k 2 года назад +3

    Python跟Matlab這類語言只適合不是本科系或本業寫程式的工程師使用 像我是機械系畢業的以前都寫matlab 通常就是把程式語言當作輔助工具方便進行本科的研究 並不是要寫出一個很專業、語法結構很嚴謹的程式 但由心底佩服那些專業的程式專家 能在那麼深層的架構下寫出專業的程式

  • @oliver310338
    @oliver310338 2 года назад +2

    Python 3.6版後有型別註記系統,pydantic這個套件也會在執行時去嚴格執行型別檢查,這個變更讓我可以接受PY不少

    • @吕华方
      @吕华方 2 года назад

      3.6引入的那个type hint机制只有一部分大型库用了,很多库都没用这玩意,而且教程里也不会用这玩意,而且这玩意主要用途是给api标注类型的(即方便使用者看文档),并不会真正限定类型

  • @yk7697
    @yk7697 6 месяцев назад +1

    確實
    有一次執行錯誤 找不出原因
    後來才知道是底線問題

  • @allezvenga7617
    @allezvenga7617 2 года назад

    謝謝分享

  • @jacksonlam07
    @jacksonlam07 2 года назад +5

    空白格不是按Tab就能解決的事嗎?😂雖然我是Python的愛好者,但我還是按下了喜歡,因為我覺得每個人對於一個語言的語法的看法都不同。

    • @jacksonlam07
      @jacksonlam07 2 года назад

      大部分的Python編輯器在打完冒號之後按Enter,一般都會自動幫你自動縮排了,不需要自己再手動打空格了

    • @hsw1976
      @hsw1976 2 года назад

      Tab 跟空格是兩回事,不但在 ASCII 裡是兩個不同的內碼,在好一點的編輯器裡,會有類似「把空白填滿Tab」、「使用純Tab」的設定,甚而還能設定一個Tab 的寬度(以字元計)。

  • @cyanlake42
    @cyanlake42 2 года назад +1

    大學電資學院, 有學組語, C.但因為走固態物理組、奈米電子組,所以實務上跑計算機物理還是Matlab跟Python.
    對我來說數學跟物理就算不完了, 所以更注重程式很清楚依照物理上的邏輯撰寫, 這時候簡潔俐落的行文就很重要,因為程式語言對工院來說只是工具,Python跟Julia更符合計算機物理數學的使用需求.
    對固態物理組來說真正需要鑽研技術和知識的部分還是放在量子元件應用和開發. 要模擬,然後實驗, 量測結果, 分析,完成一round的循環. 程式語言是工具, 跟外語一樣, 依照你的需求使用它就好了.

  • @StanWu
    @StanWu 6 месяцев назад

    找到知音了,努力 try coding 還是無法適應! 看來底線已經觸碰到您的底線了 XD

  • @hsw1976
    @hsw1976 2 года назад

    視窗軟體跟網頁程式開發,整體而言最偏好的還是 VS.Net 體系的開發環境。
    短暫接觸過安卓應用開發,玩過一陣子 Android Studio 跟 Eclipse,但因為不管哪種都有很囉嗦的程式碼及檔案架構,就慢慢疏遠之。雖然 VS 環境後來也推出可以通吃安卓、iOS的開發套件,但沒什麼時間研究,便一直擱置。
    稍微接觸過 iOS應用開發,故不得不使用 swift + Xcode,雖然程式碼及檔案架構不像安卓開發環境那麼囉嗦,但它在程式碼切割分層的部份,就好像沒有微軟開發環境好做,範例也不太好找,這點或許還需要一些時間熟悉研究。
    派森,目前自動抓資料又沒 GUI 需求時的唯一選擇。此開發體系讓我討厭的地方在於,似乎無法透過 IDE 搞定所有必要的組態設定。當然也非常佩服發明人,他很勇敢地把「縮排層數」當成程式區塊的決定性劃分條件。在聽過或用過的程式語言中,據悉只有 Fortran 有類似特性。

  • @exploredesign9509
    @exploredesign9509 2 года назад +1

    评论区都是大佬啊 只有我一个新手路过的吗

  • @paraminddual5685
    @paraminddual5685 2 года назад +2

    所有的论点都可以非常轻易的搞定,看来还是网上没人告诉你这些基本的东西呀. 首先空格这其实还是很简单, 使用vim或其他python工具都有自动检测这个当前行需要的空格, 但这个需要自己去设置不是初始默认设置,而且最好使用vim根据文件类型来自动决定是否使用这种空格, 如果这个有遗漏可以使用pycharm的默认自带的工具帮你一目了然的发现哪些地方没有正确使用空格,python 是一个粘合剂,知道用哪些工具以及怎么粘合才能用好.

    • @zenei3854
      @zenei3854 2 года назад +1

      真的一堆根本不是問題

  • @hollowaysxp
    @hollowaysxp 2 года назад

    從C和Java學起的,一樣不愛tab縮排代表迴圈或if的範圍,有時候會看錯寫錯地方。
    習慣用有{ }vscdoe看也很快,只是最近都寫php比較多也是{ },大部分沒宣告類別的全都當obj來看,弱型別自動轉型是一種方便,但事後找一個很小很小的錯誤也會怨恨弱型別,帶來事後debug更多時間。
    寫Java大概是2014~2015有在寫Android常用到,現在也幾乎沒在用。

  • @jthuang6417
    @jthuang6417 2 года назад +1

    做為一個曾經超級討厭 Coding 的人,我大一時是一位0基礎的菜鳥,被必修強迫吞下C之後就對程式語言有超大的陰影QQ
    當時的狀況大概就是老師上課還在講二進制,晚上上機助教就要求你直接寫個簡單的加法器,沒完成 project 還不能走因為會被當XD(根本連Printf都沒看過也沒教過,我連 hello world 都有障礙rrrr
    從此立志與 coding 絕緣的我全部的技能都點在電類的專業,混到現在碩士畢業了因為工作需要開始要學 python,不得不說 python 根本天使欸,我完全不需要擔心;;之類有的沒得的 typo、變數 type 的設定,什麼int main 還有各種括號的規則,這些在開始寫c之前就會熄滅新手熱情(必須承認我現在也把 float pointer之類的概念都忘光了哈哈),但最近開始自學 python 輕輕鬆鬆就可以完成一個小程式真的蠻有成就感的,學起來也比較舒服。
    當然我也認同這樣拋棄一堆程式語言基礎或是計算機組織概念的狀況對於一個 SWE 或是要更精進的工程師會蠻不妙的,但...就像打籃球沒有人會從基本運球訓練或繞三角錐開始,做為一個菜鳥最快樂的瞬間肯定是聽到球進網的 splash,然後趕快去撿球跑回三分線再出手一次看看自己是不是籃球小天才,要一個菜鳥先從雙手運球開始掉球去撿球回來繼續雙手運球真的蠻消磨熱情的拉。
    希望我用 python 寫一些足以應付工作上需求的 script 之後,還可以有熱情回去練習那些基本功的部分哈哈

    • @432v01
      @432v01 2 года назад

      第一段那不是C語言的問題顯然是老師教得爛,語法都沒教是要寫個屁,當大家都會通靈?
      第一堂加法器這個要求沒問題,正確的作法應該是我自己示範輸入a b輸出a-b的程式,然後給學生練習說現在我輸入a b c要輸出a+b+c怎麼寫
      任何語言都是這樣學的,在接觸到語言特性之前不應該有任何困難

  • @CabbageCube
    @CabbageCube Год назад

    ㄜ,在vscode裡寫python不是只要在:後面按enter就會自己空四格了嗎?再不行妳按tab也行啊

  • @kimikusobuta1278
    @kimikusobuta1278 6 месяцев назад

    真的,我超想回到過去先學其他語言再學python

  • @BPlove281
    @BPlove281 2 года назад

    8:40
    想知道你對認真想學寫程式的人
    建議從什麼語言開始

  • @fluxdavid9144
    @fluxdavid9144 10 месяцев назад

    作為剛使用PYTHON的新手,完全同意你的抱怨,因為我也遇到了,之前是玩VB

  • @蔡東航-e9j
    @蔡東航-e9j 2 года назад

    我重新學程式語言的時候也是先接觸到python,然後簡易的完成爬蟲跟wordpress的api之後,我就沒在碰過了,但是他的好處就是,讓我先獲得了一些成就感,畢竟從高中就沒再碰程式將近8年。後續就是專研在前端,javascript跟前端框架的部分,所以python對我的優點可能不見得適合大家,但對我來說,就只是一個信心的起頭。對於轉職者來說,對他們來說,只希望可以趕快進入這個領域,並開始可以實作起來,畢竟已經是需要賺錢的年紀,而非讀書期間,還可以專研很多基本功。當然基本功不足會很痛苦,但在這個領域就是不斷學習,會去補足的人,自然會被留下,而非在一開始就被擋下

    • @吕华方
      @吕华方 2 года назад

      然而它的奇特的语法会让把它作为第一门语言的人更难适应其它语言,我觉得javascript更适合作为第一门学习的语言

  • @jimliu8233
    @jimliu8233 2 года назад +1

    Me too, 我是從c/c++初學入門的programmer,我最近學python也是有同樣的反感。

  • @abcd6891
    @abcd6891 2 года назад +1

    8:57 可是把東西拼起來能動就好的人升遷超快
    然後我這個在意code 品質的人在幫他修bug,升不上去。

    • @johnlin7439
      @johnlin7439 2 года назад +1

      通常會把能動的程式修到跑不起來,一大堆看不順眼的,不知道這邊為何要放這段垃圾 ... 但是一改掉程式就是會出錯,只好又乖乖 roll back 回原版

  • @jackwang1234
    @jackwang1234 2 года назад

    我从来没数过空格,vscode 按tab 自动插入空格,Python 的 extension 也可以自动检测到 mismatches

  • @jerry255255
    @jerry255255 2 года назад

    除了第一點不認同外 其他都超級認同 XDD

  • @og83
    @og83 2 года назад

    我是從 c,c++ 早期學上去的,到 pyhton 這邊真的有許多的不習慣
    傳統一些明確的宣告雖然麻煩,但也比較好找資料
    尤其是接下前任的代碼,這樣也比較清楚
    但 python 這部份就比較辛苦一點

  • @eir457882
    @eir457882 2 года назад +1

    Scala 第一次聽到google一下好像不錯 來學

    • @吕华方
      @吕华方 2 года назад

      scala的地位现在有点尴尬,因为比它更人性化的有kotlin,比它语法特性更少的有java,但是它本身还是一门很强大的语言,特别是它的模式匹配和宏

  • @Illianification
    @Illianification 2 года назад +1

    Python好處就是開發非常快,畢竟少了很多嚴謹的東西,而且還有非常非常多的lib可用。數空白鍵好像沒怎麼遇過,通常都是用Tab縮排。

  • @elainehuang8187
    @elainehuang8187 2 года назад +2

    最喜歡講壞話的影片惹 XD

  • @timmy61109
    @timmy61109 7 месяцев назад

    的確,我用 Python 這麼久,都講過一件事情,就是越簡單的反而會越難,因為有很多東西都是藏起來的,不好懂或者理解。
    底線,我覺得很棒,我反而越來越討厭 C 語言的大小寫規則,但我覺得只是大家不同習慣這樣,可能當初設計者也是這樣想吧?
    的確一開始不用定義是蠻容易造成錯誤,但其實習慣後其實會在一開始就開始透過預設方式告知識什麼類型,等於說寫 Python 還是需要有好的寫程式習慣,才不會造成這些錯誤。而我覺得如果沒有強定型語言特性,會讓這個語言維護超困難,錯誤會因為錯誤習慣造成更多錯誤。後面那個可能只是透過加上說明方式,其實沒有寫上 type 本身是還好。
    Python 跨平台真的超讚,好用而且我喜歡。如果要 Python 跨平台,建議真的要用選用純 Python 寫的套件,自己寫的過程也要減少 C 語言依賴才是好的。只是人工智慧或者其他的大多還是 C 語言,個人認為那個是因為 C 語言環境不好造成的,如果是透過 C 語言開發,也會遇到同樣的問題。另外,人工智慧的部份,其實建議 Python 是要拿來做 API 用,不然速度真的會慢到靠北。
    Python 的測試其實很好用,真心覺得。自己寫過很多測試,發現我有很多可以探索的。
    另外,其實 Python 從以前到現在,在 Windows 都會有一個自動產生的檔案,也是 exe 檔案,都是可以直接拿出來呼叫的。
    但套件跟快速使用真的很棒哈哈哈哈,深不可自拔

    • @kodeplay_untyped
      @kodeplay_untyped  7 месяцев назад +1

      哇哇哇 謝謝你那麼深入的分析~~
      從這支影片發布到現在,我幾乎沒有用過python了,可能要再下一個project才有辦法有新的想法跟見解
      python會生成exe?這個我第一次聽到!! 我們公司是做了自己的python binary生成

    • @timmy61109
      @timmy61109 7 месяцев назад

      @@kodeplay_untyped 其實還好啦,我也只是用到其中的60-80功能而已。
      Python 是這樣的,如果只是寫成一個檔案而不製作成套件,那他本身不會自動轉換。
      如果將Python程式做成套件,也就是有 __init__.py 的資料夾地下,python為了執行效率會將程式透過直譯器轉譯成二進位編譯檔案,有點算是虛擬機器語言或者比較低接的組合語言,都會放到 __pycache__ 裡面,然後被呼叫套件的時候會直接呼叫裡面的資料。
      因此,如果想要改善Python 效能,其實在記憶體設定、嵌入C/C++方式、呼叫C/C++函式庫通過Python 執行,都是可以解決效能的問題。甚至可以讓不同程式語言通過Python 做API轉換,直接匯入不同語言(例如:C語言的函式庫跟Java函式庫,兩個可以同時匯入在同一行程式碼去做執行)。
      這個部分就蠻有趣的,我以前就是直接在 Windows將這些檔案包起來丟給網友在 Windows 執行的,連安裝跟相依套件都不用就可以執行。因此提到的堪用,其實也蠻合理的,因為就是將Python 直譯成C或者其它底層,然後再編譯成可以執行的,的確不會出現太多東西。
      因此有時候你更新 Python 程式,但沒有讓程式去跑匯入跟一些動作,是有機會執行到過去的舊的程式,但我已經很久沒有遇到這個問題了。

  • @WSLWSLWSLWSLWSL
    @WSLWSLWSLWSLWSL Год назад

    我大學讀台大某理工科系,但沒什麼用到程式語言,只有在大一修過C。這幾個月因業務需要,開始學起python,我也覺得空白格的事非常困擾...特別是當空白格打錯,程式卻可以跑,這樣debug時完全不知道問題出在哪一行。

  • @goldball1105
    @goldball1105 6 месяцев назад

    一開始本來打算寫python 的 dcbot,但是後來因為被pip requirements那些搞心態崩了,後來去用node module package 發現很方便,所以就跑去寫js了
    蟒蛇就敗在pip package lol

  • @sunshaking
    @sunshaking 2 года назад +1

    有道理的。还有其他的缺点没有提到。不如main入口的语法设计为什么那么丑?

    • @吕华方
      @吕华方 2 года назад

      它莫得main这种东西啊2 3 3它只有模块初始化脚本,里面需要判断当前执行的模块名,然后做出对应的操作2 3 3

    • @吕华方
      @吕华方 2 года назад

      它莫得main这种东西啊2 3 3它只有模块初始化脚本,里面需要判断当前执行的模块名,然后做出对应的操作2 3 3

    • @吕华方
      @吕华方 2 года назад

      它莫得main这种东西啊2 3 3它只有模块初始化脚本,里面需要判断当前执行的模块名,然后做出对应的操作2 3 3

  • @wksu2342
    @wksu2342 2 года назад

    強制指定 type 難道就永遠不需要型別轉換?更何況還有隱式的型別轉換呢!

  • @yuchengli8009
    @yuchengli8009 2 года назад +2

    我覺得就變數命名的潛規則方面真的需要去認識它,即便不是 python 在多人開發上面 C++ 也常常在制定上面使用到相同規則。

  • @liaofrank5477
    @liaofrank5477 2 года назад

    短髮很適合妳!!!

  • @sao-coding
    @sao-coding 2 года назад

    所以寫程式那麼久不知道有tab可以用嗎?
    怎麼會有人一直在按空白

  • @larry.programing_career
    @larry.programing_career 2 года назад

    空白格用tab鍵算就行了不是嘛?

  • @含糖豆漿
    @含糖豆漿 2 года назад

    我是法律人,大學讀法律,畢業後在法律界上班。
    空白格對我來說就像法律條文的篇、章、節、款,其下又分為條、項、款、目。
    學python,這些空白格的規律與法律條文的規律很像,不會覺得難區分。

  • @m06800825
    @m06800825 Год назад

    空白格的問題完全可以用IDE解決, 像是vscode的indent-rainbow extension, 就可以解決這問題~

  • @stackerliew
    @stackerliew 2 года назад

    cobol也是要求空白格吧。我聽說的。還是Fortran?

  • @yang-yangsleraningjournal8774
    @yang-yangsleraningjournal8774 2 года назад

    我是一個剛學幾個小時的菜鳥。 但只要每次使用該亂數都先轉換,是不是就可以克服此問題。 不管變數原本是什麼,習慣要用前轉換就行了。

  • @charlottehong1276
    @charlottehong1276 2 года назад

    空白的習慣確實是個問題
    不是算不算準的問題,就是剪下貼上的時候(如果IED沒對齊功能) 或是各種情況一定會發生跑掉的情況
    如果有大括號保護直接按格式化就可以自動推正確了,這如果是個可選項就會很方便了看自己用途或習慣來確定要不要加大括號
    不過換來的方便性覺得是值得的,寫習慣之後這個痛點應該是可以抹平的

  • @user-fungzzzz
    @user-fungzzzz 6 месяцев назад

    python的確是有好有壞,但它會紅還是因為優點很多,其實沒有一種語言是全面比較優秀,影片中的5個缺點,我相信資深的程式人士一定有很不一樣看法,要說那是缺點也的確是,但在一些其它彈性面擴充面來說,是非常有幫助的,也才會能有一堆可以直接使用的便利性。反正要照顧入門者程度又要達到進階者想要的標準,那是非常兩難的,就跟複雜指令集和精簡指令集是相對的。python我是覺得不適合初學者第一個語言,它很有彈性,但入門者常會以自己的面向是否好用為出發點來思考,便會感到莫名奇妙。當然被指出缺點後python也就試著改進,但其實如果不去瞭解python彈性面向,就只會陷入python迎合入門者的皮毛改進。

  • @wuchieh
    @wuchieh 2 года назад

    第一點 我都是用tab去處理
    二三四點很同意 確實是有遇到這方面的問題
    最後關於測試的部分 倒是沒有遇到過這種問題

  • @franktung4139
    @franktung4139 2 года назад +2

    笑死 python的這種強制對齊行為是很標準的排列方式
    我在寫C++ 也是遵循python的排列對齊方式
    看來你寫程式的習慣很差
    看你寫的程式碼一定非常痛苦

  • @jasontsai9853
    @jasontsai9853 2 года назад

    有用autopep8嗎?

  • @GaryWee111
    @GaryWee111 2 года назад +1

    對於一個寫了11年程式,主要寫C#,有接觸過C++, 其中有超過4年是在寫python的工程師。。。
    Python 雖然很方便,有很多library,可是你講的痛點我全部可以relate...
    除此之外,沒了。
    除非我趕時間,不然我還是會用C# 或其他語言去完成工作
    (到底為什麼我要一直數空格!??!?!?!?!)

    • @play005517
      @play005517 2 года назад +1

      到底是誰會去數空格,影片中的問題幾乎都是環境建置沒做好的後果
      足夠現代的IDE都不用你數空格,black flake8 mypy裝好,static type checking 也比到 compile time 再去 decipher error message 進步太多了
      這些東西都不只限於python,應該是每一門語言搭配正確的IDE就都該有的最基本功能

    • @GaryWee111
      @GaryWee111 2 года назад

      @@play005517 要看一開始是如何開始接觸python的吧,我一開始是公司需要老闆讓我們統一使用 Spyder IDE,然後大家都是半桶水在自己摸索,固然會遇到這些問題。
      後來是因為自己喜歡寫程式,
      才會不斷研究、摸索,
      找到更好的方法,更好的IDE,更好的套件模組去解決這些問題。
      其他對程式不熱愛的同事,他們早就放棄了。。。
      無可否認,這個痛點是真實存在的。

    • @朋也-peng
      @朋也-peng 2 года назад

      python用空格取代括號的方式個人也覺得維護上有點麻煩,說誇張點光想要在程式裡找到bug,最後因為空格位置不對這種狀況真的不好除錯
      但我能不用python 就盡量不用最主要問題還是效能問題,它語法上能幫我省得開發時間不多(IDE夠好就行XDD),但效能上要應付real-time 處理真的不行,還不如一開始就用其他語言開發

  • @paraminddual5685
    @paraminddual5685 2 года назад

    dynamic type这个其实很好,要是运行中允许字符串乘以浮点得出了一串数字岂不暗藏bug到项目交付了, 提前发现问题才更好,而且这个其实是有更深的设计用意,它要保证python能与强类型语言能够有协调工作的基础; 当然不能提前通过编译发现确实是个鱼和熊掌的问题,但这个可以用refactoring与封装设计部分解决, 虽然不是很完美

    • @吕华方
      @吕华方 2 года назад +2

      这就是动态类型的问题所在了,容易写出奇怪的东西,因为人是很容易犯错的,有编译器帮你检查类型可以减少这种问题的出现

  • @jgboys2195
    @jgboys2195 2 года назад

    python若寫迴圈或控制流程可以用tab鍵自動空四格了

  • @supai-han5260
    @supai-han5260 2 года назад +1

    python是我第一個學也是自己最常用的,最近工作有蠻多機會要為python大專案寫測試的確也覺得mock跟各種測試不是很直觀