PPKan
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.

      Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Explore these features while you wait
      Complete general settings
      Bookmark and like published notes
      Write a few more notes
      Complete general settings
      Write a few more notes
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 到底該不該學程式設計 在最近,這個問題一直在我身邊被提起,就簡單花一點時間,聊聊我自己對學習程式設計的想法與看法。 #### TL;DR 該,程式設計能夠培養解決問題的思維,並在這之上學習到現代電腦的技術與用電腦解決問題的方法。 至於要怎麼開始,去上[CS50](https://cs50.harvard.edu/x/2022/)。 ## 正文 本文分成三個部分,程式設計是什麼,為什麼要學,要怎麼學,簡單明瞭地讓你知道為什麼我覺得要學程式設計。 ### 什麼是程式設計 程式設計對我來說,就是**用程式語言解決問題**。 這個定義對很多人來說可能很廣泛,我相信大部分人對程式的理解就是: > 寫程式看起來好酷,我要學python > C++聽起來好厲害,我要學 上面其實只有講到工具的學習,但事實並不是只有這樣,學習語言(工具)只是其中一個部分,我更著重、更在意的部分其實在後面的**解決問題**。 不然就會變成 > 我python寫得呱呱叫,學是很好玩,但要拿來幹嘛? > C++好難,不學了 所以說其實除了程式以外,解決問題的思維也是程式設計的一環。但請注意一個重點,當我們學程式學得越深,我們能接觸的問題也就越深,所以把工具學好也是很重要,不過千萬不要倒果為因了。 ### 為什麼要學程式設計 像上面說的那樣,程式設計是一種解決問題的過程跟手段,所以為什麼要學程式設計,我的答案已經可以呼之欲出:**培養分析問題與解決問題的能力**。 那你可能會問,好啊,既然目的是分析問題跟解決問題,那我去看書就好,我幹嘛花那麼多時間學python,還要摸電腦,那麼累。 其實也沒錯,如果單單只想訓練問題分析能力的話,看書其實就好了,我覺得程式設計很值得學的地方在於,**程式的目的其實就在解決問題**。像上面講的一樣,我們為了解決問題,自然而然就要去分析他,也要去磨練自己工具的使用。 另外一點我覺得程式設計不錯的地方是,**可以自己動手**。在很多時候書上的東西都是生活、或是工作上的問題,自己要動手去解決很難。但電腦裡面有很多很多問題,我們可以從解決這些問題的過程中,慢慢培養自己的問題思維能力。 舉例來說,我每天都要負責分析客戶訂單,看有哪些新客戶出現,以往都是用眼睛一個一個對,看排序上面有多了哪些不認識的名單,**但是失誤率好高,怎麼辦?** 這時候我們可以把問題拆成好幾個步驟去進行: #### 1. 分析問題 首先,我們從敘述裡面得知,我們有新客戶跟舊客戶,現在要找出新客戶的名字,於是問題就知道是:**如何分析名單,並標記出不重複(新加入)的名字。** #### 2. 思考如何解決問題 這時候有了問題,我們就可以來想解決流程,我們首先要讓名單變得容易統整,然後再對名單進行處理,於是我們導出這樣的步驟: 1. 把名單彙整到excel表格裡面 2. 用函數對表格進行比對 3. 輸出結果到特定的格子裡面 #### 3. 動手解決問題 有了流程,我們做事情就會變得很清楚,如果還是不清楚裡面怎麼做的話,我們這時候也會知道**我們要怎麼查才會得到結果**。像是我們如果骨子裡不知道函數要用EXACT/IF...,我們用關鍵字去查,也會得到一樣的結果。 ... 而學習程式設計,必然會經歷這樣的問題解決歷程。學習程式設計並不是說我們今天一定要學python、一定要學C,而是在用程式解決問題的過程中,掌握如何分析問題、解決問題的方法。*我們上面用的範例用的工具也只是excel。* ### 如何入門程式設計 講到這邊好像就有點離題了,不過秉著良心還是講一下要怎麼學,不然口口聲聲地說學這個不錯,卻不給一條路,是有點過意不去了。 程式的路百百條,有寫網頁的、有寫深度學習的、有寫windows app的,各式各樣。對於程式設計,我自己比較推薦的是傳統的路線:在了解電腦運作的同時,接觸各個領域的內容。**這邊路很多條,沒有一定的路,只有最適合自己的路。** 現在比較流行的是用很快的速度學一門語言,然後丟幾個題目給你練習。我覺得這樣的方法前面雖然很快,也很有成就感,能夠快速地掌握很多以前不知道的知識,也能夠有些產出。我覺得這樣的學習是**有點可惜**的,當我們一頭栽進去工具之後,就會發現電腦上其實很多東西是互相關聯的,當我們還要繼續深耕的話,回頭去學別的東西的時候還是一片迷茫,很多都要從頭開始。 當然,這樣的方法也是旨在用程式解決問題,目的都是一樣的,只是我有我自己偏好的學習模式。 我的想法是,既然我們要用電腦解決問題,我們就要知道電腦的世界有什麼東西、知道電腦跟程式到底是什麼,也要**讓自己能夠一直向後發展、學習**。在這學習的過程中會接觸到一些工具的使用,但主要還是拓展自己的眼界跟知識。 同時有知識跟工具的課程,我這邊只推薦一門,哈佛大學的[CS50](https://cs50.harvard.edu/x/2022/)。 CS50從Scratch開始(對,就是我們小學的時候電腦課那個狗人),讓你知道一些程式的元素,像是電腦的指令是一個步驟接著一個的、又像是迴圈可以讓動作重複進行...等等。接著會碰到一些比較"電腦"的東西,例如演算法、記憶體等等是如何運作的,也會提到像是python, html之類的實用東西。 聽起來生澀,上起來**非常好玩**,裡面的作業也**非常好玩**。 學了這門課程,你就會知道自己少的是什麼,未來想要往哪邊走,也對程式能有一個很好的入門。假如說之後想學更多python,那就去找python的課來上,想學ios APP,那就去找ios來上,重點還是在於**讓自己知道問題要怎麼被解決**,對於這點,這門課會是很好很好的基礎。 當然,有些課程像是[Programming for Everybody](https://www.coursera.org/learn/python?irclickid=0pyW%3AeVMdxyIWEIVyvxxWRUGUkDRPuTo9XQkQ00&irgwc=1&utm_medium=partners&utm_source=impact&utm_campaign=259799&utm_content=b2c#syllabus),裡面也有講到電腦,卻花了更多篇幅在python上面,如果覺得不想學那麼多"其他東西"的話也可以去聽聽看,但我自己是認為在學習上,先把自己的視野拓展開來是最最重要的事情。 ## 結語 程式設計學了不虧,掌握到電腦的工具之外,也可以培養解決問題的思維能力,推推! 有興趣交流的歡迎留言唷~ [medium連結在這裡](https://medium.com/@peter-tw/%E5%88%B0%E5%BA%95%E8%A9%B2%E4%B8%8D%E8%A9%B2%E5%AD%B8%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88-734d7aac6ae) ###### tags: `程式`

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully