編程語言是什麼?

来源:https://www.cnblogs.com/metahuber/archive/2022/11/03/16855796.html
-Advertisement-
Play Games

大家好,我是metahuber,數字宇宙探索者。 本系列教程是Python的入門教程,本篇文章是此教程的第一篇,希望大家多多關註。 在學習Python之前,我們首先瞭解下什麼是編程語言。 說到編程語言,還需要從程式說起。 其實,程式就是一系列指令,電腦之所以能夠工作,根本的原因是它能夠識別人類發出 ...


大家好,我是metahuber,數字宇宙探索者。

本系列教程是Python的入門教程,本篇文章是此教程的第一篇,希望大家多多關註。

在學習Python之前,我們首先瞭解下什麼是編程語言。

說到編程語言,還需要從程式說起。

其實,程式就是一系列指令,電腦之所以能夠工作,根本的原因是它能夠識別人類發出的指令。目前你看到關於電腦的所有內容,包括網站、視頻、搜索引擎等等,歸根結底都是電腦執行人類指令產生的結果。

也就是說,電腦本身是什麼也做不了的,只有人類編寫好指令後,電腦按部就班地去執行指令,才能真正工作起來,從而產生有價值的內容。

所以,你也許也發現了,這其中最關鍵的就是那一系列指令串,而我們人類編寫指令串的過程就是稱為編程。

所謂編程語言,那“語言”又是什麼東西?

眾所周知,電腦只認識0和1這種二進位數字,我們可以稱之為機器碼,也就是機器語言。這也意味著,人類需要將指令編寫為機器語言,才能夠讓電腦工作。但機器語言與人類語言差異太大,不符合人類的語言習慣,人類想要閱讀並理解機器碼是相當困難的。

於是乎,電腦科學家們想到個折中的辦法,他們在機器語言和人類語言之間做了一層翻譯器。這個翻譯器十分關鍵,我們後續文章還會提到。有了這個翻譯器,人類就可以用習慣上的人類語言邏輯去編寫代碼,編寫完成後,翻譯器再把代碼翻譯成機器語言,這樣,人類與機器之間就可以順暢交流了!

當這套解決方案產生後,人們很快就在上世紀50年代設計出了一套編程語言,也就是彙編語言,它也是第二代電腦語言(第一代就是機器碼)。彙編語言設計了一套人類易於理解和記憶的縮寫單詞,用來代替一些特定的指令,通過這種方法,人們就很容易去閱讀和理解程式執行的功能了,對現有程式的bug修複和運行維護也都變得更加簡單方便了。

.section .text
.global _start
    _start:
    .ARM
    add r3, pc, #1
    bx r3
    .THUMB
    mov r0, #2
    mov r1, #1
    sub r2, r2, r2
    mov r7, #200
    add r7, #81
    svc #1
    mov r4, r0
    adr  r1, struct_addr
    strb r2, [r1, #1]
    strb r2, [r1, #4]
    strb r2, [r1, #5]
    strb r2, [r1, #6]
    strb r2, [r1, #7]
    mov r2, #16
    add r7, #1
    svc #1
    nop

彙編語言

後來隨著電腦的發展,彙編語言漸漸滿足不了不同領域的編程要求和軟體功能,於是C語言、C++、Java這種高級語言相繼橫空出世,這些語言的語法、結構相對於彙編語言更加成熟,也更易於理解了。

編程語言發展到現在,電腦科學家們已經開發了成千上百種編程語言,而且隨著時間的演變,這些編程語言又產生了很多不同的版本。但無論是什麼編程語言,也無論有多少個版本,雖然它們在細節上有所不同,但它們的核心邏輯都是相同的。這也是為什麼當程式員學會一門編程語言後,再學習其他語言會非常快的原因。

說到編程語言的核心,具體來講就是編程語言制定了一套規則,在這套規則下,每種編程語言都擁有固定的關鍵字(縮寫單詞)、使用格式(稱為語法),以及精確的含義(稱為語義)。當然,編程語言肯定沒有你學習一門外語那麼困難,這點你不必擔心。

在學習Python這門編程語言之前,你可能也瞭解過其他編程語言,比如C,C++,Java等,就像我之前所說的,無論是什麼語言,核心邏輯都是一樣的,無非都是通過翻譯器將這類語言翻譯成可執行的機器語言。那麼這套翻譯器是如何設計的,它又是如何工作的,這一點我們下個章節會進行詳細介紹。

原文鏈接:http://pythonjishu.com/whats-python/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當我們使用vuex的時候,時不時能看到“更改Vuex中的store中的狀態唯一辦法就是提交mutations”,但是有沒有試想過,我們不提交mutations其實也能修改state的值?答案是可以的 我們可以直接使用如下方式; this.$store.state.num=666; 其中,這樣修改的話 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 for in 和 for of 相對於大家肯定都不陌生,都是用來遍歷屬性的沒錯。那麼先看下麵的一個例子: 例1 const obj = { a: 1, b: 2, c: 3 } for (let i in obj) { console.l ...
  • 一、Yarn 產生的背景 Hadoop2 之前是由 HDFS 和 MR 組成的,HDFS 負責存儲,MR 負責計算。 一)MRv1 的問題 耦合度高:MR 中的 jobTracker 同時負責資源管理和作業控制兩個功能,互相制約。 可靠性差:管理節點是單機的,有單點故障的問題。 資源利用率低:基於 ...
  • 面向對象 一、三大特征之繼承 python三大特征: 封裝、繼承、多態 三者中繼承最為核心,實際應用多,感受較為直觀 封裝和多態略微抽象 1、繼承的概念 繼承的含義: ​ 在現實生活中,繼承表示人與人之間資源的從屬關係 ​ 例如:兒子繼承父親 ​ 在編程的世界中,繼承表示類與類之間的資源從屬關係 ​ ...
  • 熱度已經過了,但還是覺得有必要從架構設計的角度來討論一下此事。並用以往我的經驗來設計一套負載能力更好一些的系統。 先說一下基本的架構思路: 最大限度的避免計算,靜態化 不用資料庫,更新類操作使用APPEND模式的文本文件 流程最短,最好是客戶端訪問的第一臺伺服器就能完成全部工作 善用CDN 客戶端負 ...
  • 您好,我是湘王,這是我的博客園,歡迎您來,歡迎您再來~ 從之前的Lambda表達式的演變過程可以知道,Lambda表達式其實是一個對匿名內部類的簡化過程:去掉了多餘的語法修飾,只保留最最核心的部分。在Java中類似這種使用匿名內部類寫代碼的場景非常多,比如Runnable介面,就是典型的最好使用La ...
  • 本節內容會用到之前給大家講過的這兩篇: 2流高手速成記(之六):從SpringBoot到SpringCloudAlibaba 2流高手速成記(之三):SpringBoot整合mybatis/mybatis-plus實現數據持久化 鏈接掛出來,方便咱們中途對比著看 老規矩,先放出本節的項目結構: 我們 ...
  • XML 官方文檔:https://www.w3school.com.cn/xml/index.asp 1.為什麼需要xml? 需求1:兩個程式間進行數據通信? 需求2:給一臺伺服器,做一個配置文件,當伺服器程式啟動時,去讀取它應當監聽的埠號、還有連接資料庫的用戶名和密碼 spring中的IOC配置 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...