电竞比分网-中国电竞赛事及体育赛事平台

分享

Computer:少兒編程—每個(gè)人都應(yīng)該學(xué)習(xí)編程,它能教你如何思考—編程入門的簡(jiǎn)介(編程語言的特點(diǎn)&種類&開發(fā)工具&對(duì)比人類語言)、編程應(yīng)用、編程意義之詳細(xì)攻略

 處女座的程序猿 2022-09-03 發(fā)布于上海

Computer:少兒編程—每個(gè)人都應(yīng)該學(xué)習(xí)編程,它能教你如何思考—編程入門的簡(jiǎn)介(編程語言的特點(diǎn)&種類&開發(fā)工具&對(duì)比人類語言)、編程應(yīng)用、編程意義之詳細(xì)攻略

導(dǎo)讀:喬布斯說,每個(gè)人都應(yīng)該學(xué)習(xí)編程,因?yàn)樗虝?huì)你思考的方式。因?yàn)槌绦蚓褪菍?duì)現(xiàn)實(shí)事物的抽象,而且,按照寫好的邏輯運(yùn)行。所以,編程能夠鍛煉我們的抽象思維能力和邏輯思維能力。
"Everyone should know how to program a computer, because it teaches you how to think."—Steve Jobs
"You might not think that programmers are artists but programming is an extremely creative profession. It is logic-base creativity."—John Romero
你可能不認(rèn)為程序員是藝術(shù)家,但編程是一個(gè)極具創(chuàng)造力的職業(yè)。它是基于邏輯的創(chuàng)造力。
"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun."—Linus Torvalds
大多數(shù)優(yōu)秀的程序員從事編程,不是因?yàn)樗麄兿M玫綀?bào)酬或受到公眾的追捧,而是因?yàn)樗苡腥ぁ?br> "First, solve the problem. Then, write the code."—John Johnson
首先,解決問題。然后,編寫代碼。


電腦編程相關(guān)的基礎(chǔ)知識(shí)

1、程序、腳本、軟件執(zhí)行原理

CPU可以執(zhí)行二進(jìn)制代碼 這里是由硬件完成,是硬件固有的屬性,是一切的開始。

編譯器:以gcc 舉例,gcc是一個(gè)程序。它可以將c語言代碼變成二進(jìn)制代碼,這種變化的過程叫做編譯,然后由CPU執(zhí)行這些二進(jìn)制代碼。
解釋器:每一種腳本語言都有自己的解釋器,它可以執(zhí)行腳本。所謂的執(zhí)行就是這個(gè)解釋器,根據(jù)你的腳本執(zhí)行邏輯,如果需要的話調(diào)用寫好的函數(shù)(程序)。可簡(jiǎn)單的理解為解釋器是一個(gè)高級(jí)的CPU,他可以執(zhí)行腳本代碼。

程序和腳本最大的區(qū)別:就是一個(gè)由CPU執(zhí)行,一個(gè)由解釋器執(zhí)行。

程序

有編譯出來的二進(jìn)制碼才叫程序。

腳本

程序員使用;

軟件

客戶使用,軟件由程序構(gòu)成。程序通過編譯器編譯源代碼后由硬件直接執(zhí)行二進(jìn)制文件

2、認(rèn)知操作系統(tǒng)OS

操作系統(tǒng)的作用是管理和控制計(jì)算機(jī)系統(tǒng)中的硬件和軟件資源,例如,它負(fù)責(zé)直接管理計(jì)算機(jī)系統(tǒng)的各種硬件資源,如對(duì)CPU、內(nèi)存、磁盤等的管理,同時(shí)對(duì)系統(tǒng)資源所需的優(yōu)先次序進(jìn)行管理。操作系統(tǒng)還可以控制設(shè)備的輸入、輸出以及操作網(wǎng)絡(luò)與管理文件系統(tǒng)等事務(wù)。同時(shí),它也負(fù)責(zé)對(duì)計(jì)算機(jī)系統(tǒng)中各類軟件資源的管理。
例如各類應(yīng)用軟件的安裝、設(shè)置運(yùn)行環(huán)境等。操作系統(tǒng)與計(jì)算機(jī)硬件軟件關(guān)系圖如下。合理組織計(jì)算機(jī)系統(tǒng)的工作流程,以便有效的利用這些資源為使用者提供一個(gè)功能強(qiáng)大、使用方便的操作及使用環(huán)境,從而在計(jì)算機(jī)系統(tǒng)(硬件)與使用者之間起到接口的作用。目前PC計(jì)算機(jī)(微機(jī))上比較常見的操作系統(tǒng)由Windows、Linux、DOS、Unix。

操作系統(tǒng)時(shí)間簡(jiǎn)介
Unix1969年

在AT&T的貝爾實(shí)驗(yàn)室誕生。

多用戶、多任務(wù)操作系統(tǒng)

DOS
Linux
Mac
Windows

更新中……

編程是什么

? ? ? ? 簡(jiǎn)而言之,編程是用代碼指揮計(jì)算機(jī)做事,代碼是給計(jì)算機(jī)的指令。
? ? ? ? 編程,即編定程序。就是讓計(jì)算機(jī)代碼解決某個(gè)問題,對(duì)某個(gè)計(jì)算體系規(guī)定一定的運(yùn)算方式,使計(jì)算體系按照該計(jì)算方式運(yùn)行,并最終得到相應(yīng)結(jié)果的過程。
? ? ? ? 為了使計(jì)算機(jī)能夠理解人的意圖,人類就必須將需解決的問題的思路、方法手段,通過計(jì)算機(jī)能夠理解的形式告訴計(jì)算機(jī),使得計(jì)算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計(jì)算體系之間交流的過程就是編程。

1、編程語言的三大種類(機(jī)器語言、匯編語言、高級(jí)語言)

(1)、機(jī)器語言—機(jī)器指令—占用內(nèi)存少、通用性差

簡(jiǎn)介

在計(jì)算機(jī)應(yīng)用的初期,程序員使用機(jī)器的指令系統(tǒng)來編寫計(jì)算機(jī)應(yīng)用程序,這種程序稱為機(jī)器語言程序。

原理

在計(jì)算機(jī)系統(tǒng)中,一條機(jī)器指令規(guī)定了計(jì)算機(jī)系統(tǒng)的一個(gè)特定動(dòng)作。

一個(gè)系列的計(jì)算機(jī)在硬件設(shè)計(jì)制造時(shí)就用了若干指令規(guī)定了該系列計(jì)算機(jī)能夠進(jìn)行的基本操作,這些指令一起構(gòu)成了該系列計(jì)算機(jī)的指令系統(tǒng)。

特點(diǎn)

使用機(jī)器語言編寫的程序,由于每條指令都對(duì)應(yīng)計(jì)算機(jī)一個(gè)特定的基本動(dòng)作,所以程序占用內(nèi)存少、執(zhí)行效率高

缺點(diǎn)也很明顯,編程工作量大,容易出錯(cuò);依賴具體的計(jì)算機(jī)體系,因而程序的通用性、移植性都很差

(2)、非機(jī)器語言的執(zhí)行原理—借助轉(zhuǎn)換才能識(shí)別

? ? ? ? 計(jì)算機(jī),對(duì)除機(jī)器語言以外的源程序不能直接識(shí)別、理解和執(zhí)行,都必須通過某種方式轉(zhuǎn)換為計(jì)算機(jī)能夠直接執(zhí)行的。這種將高級(jí)程序設(shè)計(jì)語言編寫的源程序轉(zhuǎn)換到機(jī)器目標(biāo)程序的方式有兩種:編譯方式和解釋方式。
(1)、編譯方式:首先通過一個(gè)對(duì)應(yīng)于所用程序設(shè)計(jì)語言的編譯程序?qū)υ闯绦蜻M(jìn)行處理,經(jīng)過對(duì)源程序的詞法分析、語法分析、語意分析、代碼生成和代碼優(yōu)化等階段,將所處理的源程序轉(zhuǎn)換為用二進(jìn)制代碼表示的目標(biāo)程序,然后通過連接程序處理將程序中所用的函數(shù)調(diào)用、系統(tǒng)功能調(diào)用等嵌入到目標(biāo)程序中,構(gòu)成一個(gè)可以連續(xù)執(zhí)行的二進(jìn)制執(zhí)行文件。調(diào)用這個(gè)執(zhí)行文件,就可以實(shí)現(xiàn)程序員在對(duì)應(yīng)源程序文件中所指定的相應(yīng)功能。
(2)、解釋方式:計(jì)算機(jī)對(duì)高級(jí)語言書寫的源程序一邊解釋一邊執(zhí)行,不能形成目標(biāo)文件和執(zhí)行文件。

(3)、匯編語言—助記符號(hào)&匯編程序翻譯執(zhí)行—仍然低效率、不可替代的特性(接控制硬件的程序上)

簡(jiǎn)介

為了解決使用機(jī)器語言編寫應(yīng)用程序所帶來的一系列問題,人們首先想到使用助記符號(hào)來代替不容易記憶的機(jī)器指令。

原理

這種助記符號(hào)來表示計(jì)算機(jī)指令的語言稱為符號(hào)語言,也稱匯編語言。

在匯編語言中,每一條用符號(hào)來表示的匯編指令與計(jì)算機(jī)機(jī)器指令一一對(duì)應(yīng);記憶難度大大減少了,不僅易于檢查和修改程序錯(cuò)誤,而且指令、數(shù)據(jù)的存放位置可以由計(jì)算機(jī)自動(dòng)分配。

匯編語言編寫的程序稱為源程序,計(jì)算機(jī)不能直接識(shí)別和處理源程序,必須通過某種方法將它翻譯成為計(jì)算機(jī)能夠理解并執(zhí)行的機(jī)器語言,執(zhí)行這個(gè)翻譯工作的程序稱為編程序。

特點(diǎn)

使用匯編語言編寫計(jì)算機(jī)程序,程序員仍然需要十分熟悉計(jì)算機(jī)系統(tǒng)的硬件結(jié)構(gòu),所以從程序設(shè)計(jì)本身上來看仍然是低效率的、繁瑣的。

但正是由于匯編語言與計(jì)算機(jī)硬件系統(tǒng)關(guān)系密切,在某些特定的場(chǎng)合,如對(duì)時(shí)空效率要求很高的系統(tǒng)核心程序以及實(shí)時(shí)控制程序等,迄今為止匯編語言仍然是十分有效的程序設(shè)計(jì)工具。

它有不可替代的特性,比如一些單片機(jī)或者一些直接控制硬件的程序就一定要用匯編語言。

(4)、高級(jí)語言—近似人類語言&兩大類&轉(zhuǎn)換執(zhí)行—相對(duì)簡(jiǎn)單、通用性好

簡(jiǎn)介

高級(jí)語言是一類接近于人類的自然語言和數(shù)學(xué)語言的程序設(shè)計(jì)語言的統(tǒng)稱。按照其程序設(shè)計(jì)的出發(fā)點(diǎn)和方式不同,高級(jí)語言分為了面向過程的語言和面向?qū)ο蟮恼Z言:

(1)、PHP同時(shí)支持面向?qū)ο蠛兔嫦蜻^程的開發(fā),使用上非常靈活。

面向過程的語言:如C語言、Fortran語言、漢語程序設(shè)計(jì)語言等;

向?qū)ο蟮恼Z言:如C++、VB、C#、Java語言等為代表。支持“程序是相互聯(lián)系的離散對(duì)象集合”,這樣一種新的程序設(shè)計(jì)思維方式,具有封裝性、繼承性和多態(tài)性等特征。

原理

高級(jí)語言按照一定的語法規(guī)則,由表達(dá)各種意義的運(yùn)算對(duì)象和運(yùn)算方法構(gòu)成。

用高級(jí)語言編寫的程序稱為源程序,計(jì)算機(jī)系統(tǒng)不能直接理解和執(zhí)行,必須通過一個(gè)語言處理系統(tǒng)將其轉(zhuǎn)換為計(jì)算機(jī)系統(tǒng)能夠認(rèn)識(shí)、理解的目標(biāo)程序才能被計(jì)算機(jī)系統(tǒng)執(zhí)行

特點(diǎn)

使用高級(jí)語言編寫程序的優(yōu)點(diǎn)是:編程相對(duì)簡(jiǎn)單、直觀易理解、不容易出錯(cuò)

高級(jí)語言是獨(dú)立于計(jì)算機(jī)的,因而用高級(jí)語言編寫的計(jì)算機(jī)程序通用性好,具有較好的移植性

2、編程語言對(duì)比人類語言

? ? ? ? 相比人類的日常交流用語,代碼語句的主要特點(diǎn)是簡(jiǎn)潔、無歧義。實(shí)際上,代碼語句和軍訓(xùn)指令很像,比如立正、向左轉(zhuǎn)、齊步走。但是,計(jì)算機(jī)不接受歧義和不確定,比如最帥的男生,如果要給出上面的指令,必須提前為計(jì)算機(jī)定義好—誰是最漂亮的人,或者給定計(jì)算機(jī)可以進(jìn)行量化的屬性,比如身高=1、眼睛半徑=2、發(fā)量=3等等。
? ? ? ? 如果代碼、語句真像軍訓(xùn)指令一樣種類有限,還賊簡(jiǎn)潔,那好像不能完成多少事情?
? ? ? ? 但實(shí)際上,并非如此,
? ? ? ? 第一個(gè)原因是,因?yàn)橹噶羁梢葬槍?duì)不同的對(duì)象產(chǎn)生不同的效果
? ? ? ? 第二個(gè)原因是,指令組合起來,也能幫助達(dá)成目標(biāo)。就像前進(jìn),朝某方向轉(zhuǎn)、停下,三類指令組合起來,其實(shí)已經(jīng)足夠可以指揮到達(dá)2D平面上任意地點(diǎn)
? ? ? ? 第三個(gè)原因是,也是更重要的是,計(jì)算機(jī)正常邏輯控制,包括條件判斷、循環(huán)等,這樣計(jì)算機(jī)能夠執(zhí)行更加復(fù)雜的任務(wù)。

3、邏輯控制語句的內(nèi)容

? ? ? ? 一般來說,代碼時(shí)按照先后順序依次執(zhí)行的,有了邏輯控制語句,可以讓計(jì)算機(jī)根據(jù)不同條件,跳過執(zhí)行或者重復(fù)執(zhí)行。

條件判斷:簡(jiǎn)單來說,就是如果某條件為真就執(zhí)行某行動(dòng),不為則真就不執(zhí)行。我們?nèi)粘I钪?#xff0c;每天都在經(jīng)歷條件判斷,比如外面下雨了,出門就帶把傘,出門快遲到了,那就趕緊跑兩步,

循環(huán):就是如果某條件為真,則一直重復(fù)執(zhí)行某行動(dòng),直至條件為假。就像現(xiàn)實(shí)中,你可以在老板心情好的時(shí)候,在他眼皮子底下一直打游戲,直到他心情被你整壞了,扣你工資。

? ? ? ? 大部分編程語言,其實(shí)都有這些類似的語句,雖然長(zhǎng)得可能有一點(diǎn)不一樣,但邏輯都是相通的。

4、各種語言簡(jiǎn)介及其對(duì)應(yīng)開發(fā)工具

萬能的開發(fā)工具也有很多……

編程語言

時(shí)間

開發(fā)工具

特點(diǎn)

匯編語言

Assembly Language

1946

VisualASM

1946年世界上第一臺(tái)電子計(jì)算機(jī)問世

C

1972

Turbo C 2

SQL

1974

SQL Server

Oracle SQL Developer

PL/SQL Developer

C++

1979

CFREE(初學(xué)者適用)

VC++6.0

Visual C++

Dev-C++

Codeblock

Python

1990

IDLE

PyCharm

VB

1991

visual basic 6.0

2020年3月11日,微軟宣布不會(huì)再開發(fā)VB或增加功能。

HTML

1993

Adobe Dreamweaver

Visual Studio Code;

PHP

1995

Dreamweaver_CS5

Notepad++

JavaScript

1995

Sublime Text

VS Code

WebStorm

JAVA

1995

JBuilder

Eclipse

NetBeans IDE

IntelliJ IDEA

C#

2000

Visual Studio Code

MonoDevelop

Go

2009

Go Reviverevive

Goland

IntelliJ + Go

編程的應(yīng)用——邏輯控制語句的應(yīng)用—解決一個(gè)迷宮

? ? ? ? 邏輯控制語句的應(yīng)用,比如你要計(jì)算機(jī)去解決一個(gè)迷宮。

1、基于問題設(shè)計(jì)解決方案

方案一,你可以先自己找到正確路徑,然后一步步用代碼給出方向指令,這個(gè)有點(diǎn)麻煩,要是自己能夠解決出來,要計(jì)算機(jī)何用?

方案二,你可以選擇配合判斷和循環(huán),寫出更靈活的指令,讓計(jì)算機(jī)根據(jù)自己是否會(huì)撞墻,這個(gè)條件去調(diào)整下一步。比如,如果前面是墻,無法前進(jìn),就換一個(gè)當(dāng)前位置沒有去過的方向,繼續(xù)前進(jìn);如果當(dāng)前位置的所有方向全部試過走不通,就回到更之前的點(diǎn),嘗試新的方向;一直循環(huán),直到找出這一套指令,能讓計(jì)算機(jī)靠自己解出任何帶出口的迷宮;

對(duì)于方案二,只涉及基本的邏輯控制,像判斷、循環(huán),其實(shí)沒有任何的人工智能。如果不能完全理解這個(gè)邏輯,非常正常,不必因此而從入門到放棄,因?yàn)楸澈蟮乃悸肥?span style="color:#ff0000;">回溯法,屬于比較高級(jí)的算法。

2、選擇合適的編程語言實(shí)現(xiàn)

? ? ? ? 當(dāng)然有了思路以后,要寫出實(shí)際能夠指揮的代碼,還是要學(xué)習(xí)某個(gè)具體編程語言的語法,寫出對(duì)應(yīng)的語句。另外,也不必?fù)?dān)心代碼執(zhí)行時(shí)嘗試不同方向,因而會(huì)花很長(zhǎng)時(shí)間,因?yàn)?span style="color:#fe2c24;">計(jì)算機(jī)運(yùn)算速度遠(yuǎn)超人類,這些一秒內(nèi),解決出來也不在話下。

編程的意義

1、教你如何思考問題

鍛煉大腦重塑問題的能力

編程是一種對(duì)人的思考進(jìn)行再思考的行為。我們不需要把每件事情想清楚,就可以在現(xiàn)實(shí)社會(huì)中生存。對(duì)某些從事機(jī)械性操作的職業(yè)來說,甚至完全不需要進(jìn)行思考。

但是,在編程時(shí),我們只有在想清楚之后,才能把程序?qū)懗鰜怼T诰帉懻_、高效、優(yōu)雅的程序的同時(shí),我們也在塑造自己的大腦,讓它能思考得更清楚、運(yùn)轉(zhuǎn)得更高效。

解決事情—理解事物拆分需求的能力

編程要求我們能夠?qū)κ挛锖土鞒踢M(jìn)行拆分,并在不同的抽象層次上進(jìn)行完整自洽的思考,這使我們有可能去解決那些規(guī)模無比龐大的問題。在實(shí)現(xiàn)一個(gè)稍具規(guī)模的需求時(shí),我們不太可能同時(shí)考慮主體流程和操作細(xì)節(jié),也不太可能同時(shí)從多個(gè)角度進(jìn)行思考。經(jīng)過合理拆分后的需求細(xì)粒度需求簡(jiǎn)單明了,實(shí)現(xiàn)難度大大降低的同時(shí),還可以分配給多人來共同進(jìn)行。

在一個(gè)成熟的軟件或互聯(lián)網(wǎng)公司,上千名工程師一起開發(fā)同一款產(chǎn)品是很常見的,而你能想象這么多人一起去寫一本書么?

提供快速解決問題的方法—抽絲剝繭的能力

編程要求我們客觀地去思考事物的本質(zhì),將注意力放在事物本身,而不是事物與我們的關(guān)系上。當(dāng)古代的婦女在河邊洗臟衣服時(shí),她可能在想:"河水好冷啊……這衣服顏色真漂亮……我家孩子為啥這么調(diào)皮……"

而當(dāng)我們?cè)跒橄匆聶C(jī)設(shè)計(jì)程序時(shí),只會(huì)想:"哦,這有一堆臟衣服需要洗"。其實(shí)很多原本困擾你許久的問題,只要跳出"我"的范疇,進(jìn)行"忘我"的思考,就變得特別簡(jiǎn)單和容易解決。

解決事情落地時(shí)的系統(tǒng)性思考能力

編程是將人的想法"實(shí)體化"的過程,這要求我們進(jìn)行更深入、更細(xì)致、更全面地思考。為了實(shí)現(xiàn)一個(gè)需求,你必須對(duì)其原理和運(yùn)轉(zhuǎn)流程了解得十分透徹,否則就無法用編程語言精確地描述出來讓機(jī)器去執(zhí)行。

在實(shí)體化的過程中,想法的結(jié)構(gòu)缺陷和邏輯漏洞會(huì)自然凸顯出來,你總會(huì)發(fā)現(xiàn)存在沒有考慮到的可能性,以及需要進(jìn)一步思考的細(xì)節(jié)。

參考文章每個(gè)人都應(yīng)該學(xué)習(xí)編程 - 知乎

2、解決實(shí)際問題—提高做事效率

? ? ? ? 通過編程,我們能夠很容易的處理大量重復(fù)性、低效率的工作,從而節(jié)省時(shí)間。而工作中很多地方都用到了編程來提高生產(chǎn)力,比如 Excel 中的宏,很多 Adobe 的產(chǎn)品(如 Photoshop, Illustrator,)都能使用 JavaScrpt 來自動(dòng)化工作。
? ? ? ? 再比如,如果遇到一個(gè)使用 Excel 處理大量數(shù)據(jù)的需求,不會(huì)編程就只能買別人開發(fā)好的腳本,或者自己花大量時(shí)間做大量重復(fù)性的工作,如果學(xué)習(xí)了編程,可以更好地滿足我們這些私人訂制化的需求。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多