分享

Computer:少儿编程—每个人都应该学习编程,它能教你如何思考—编程入门的简介(编程语言的特点&种类&开发工具&对比人类语言)、编程应用、编程意义之详细攻略

 处女座的程序猿 2022-09-03 发布于上海

Computer:少儿编程—每个人都应该学习编程,它能教你如何思考—编程入门的简介(编程语言的特点&种类&开发工具&对比人类语言)、编程应用、编程意义之详细攻略

导读:乔布斯说,每个人都应该学习编程,因为他教会你思考的方式。因为程序就是对现实事物的抽象,而且,按照写好的逻辑运行。所以,编程能够锻炼我们的抽象思维能力和逻辑思维能力。
"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
你可能不认为程序员是艺术家,但编程是一个极具创造力的职业。它是基于逻辑的创造力。
"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
大多数优秀的程序员从事编程,不是因为他们希望得到报酬或受到公众的追捧,而是因为它很有趣。
"First, solve the problem. Then, write the code."—John Johnson
首先,解决问题。然后,编写代码。


电脑编程相关的基础知识

1、程序、脚本、软件执行原理

CPU可以执行二进制代码 这里是由硬件完成,是硬件固有的属性,是一切的开始。

编译器:以gcc 举例,gcc是一个程序。它可以将c语言代码变成二进制代码,这种变化的过程叫做编译,然后由CPU执行这些二进制代码
解释器:每一种脚本语言都有自己的解释器,它可以执行脚本。所谓的执行就是这个解释器,根据你的脚本执行逻辑,如果需要的话调用写好的函数(程序)。可简单的理解为解释器是一个高级的CPU,他可以执行脚本代码。

程序和脚本最大的区别:就是一个由CPU执行,一个由解释器执行。

程序

有编译出来的二进制码才叫程序。

脚本

程序员使用;

软件

客户使用,软件由程序构成。程序通过编译器编译源代码后由硬件直接执行二进制文件

2、认知操作系统OS

操作系统的作用是管理和控制计算机系统中的硬件和软件资源,例如,它负责直接管理计算机系统的各种硬件资源,如对CPU、内存、磁盘等的管理,同时对系统资源所需的优先次序进行管理。操作系统还可以控制设备的输入、输出以及操作网络与管理文件系统等事务。同时,它也负责对计算机系统中各类软件资源的管理。
例如各类应用软件的安装、设置运行环境等。操作系统与计算机硬件软件关系图如下。合理组织计算机系统的工作流程,以便有效的利用这些资源为使用者提供一个功能强大、使用方便的操作及使用环境,从而在计算机系统(硬件)与使用者之间起到接口的作用。目前PC计算机(微机)上比较常见的操作系统由Windows、Linux、DOS、Unix。

操作系统时间简介
Unix1969年

在AT&T的贝尔实验室诞生。

多用户、多任务操作系统

DOS
Linux
Mac
Windows

更新中……

编程是什么

        简而言之,编程是用代码指挥计算机做事,代码是给计算机的指令。
        编程,即编定程序。就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
        为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路方法手段,通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。

1、编程语言的三大种类(机器语言、汇编语言、高级语言)

(1)、机器语言—机器指令—占用内存少、通用性差

简介

在计算机应用的初期,程序员使用机器的指令系统来编写计算机应用程序,这种程序称为机器语言程序。

原理

在计算机系统中,一条机器指令规定了计算机系统的一个特定动作

一个系列的计算机在硬件设计制造时就用了若干指令规定了该系列计算机能够进行的基本操作,这些指令一起构成了该系列计算机的指令系统。

特点

使用机器语言编写的程序,由于每条指令都对应计算机一个特定的基本动作,所以程序占用内存少执行效率高

缺点也很明显,编程工作量大,容易出错;依赖具体的计算机体系,因而程序的通用性、移植性都很差

(2)、非机器语言的执行原理—借助转换才能识别

        计算机,对除机器语言以外的源程序不能直接识别、理解和执行,都必须通过某种方式转换为计算机能够直接执行的。这种将高级程序设计语言编写的源程序转换到机器目标程序的方式有两种:编译方式和解释方式。
(1)、编译方式:首先通过一个对应于所用程序设计语言的编译程序对源程序进行处理,经过对源程序的词法分析、语法分析、语意分析、代码生成和代码优化等阶段,将所处理的源程序转换为用二进制代码表示的目标程序,然后通过连接程序处理将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件调用这个执行文件,就可以实现程序员在对应源程序文件中所指定的相应功能。
(2)、解释方式:计算机对高级语言书写的源程序一边解释一边执行,不能形成目标文件和执行文件。

(3)、汇编语言—助记符号&汇编程序翻译执行—仍然低效率、不可替代的特性(接控制硬件的程序上)

简介

为了解决使用机器语言编写应用程序所带来的一系列问题,人们首先想到使用助记符号来代替不容易记忆的机器指令。

原理

这种助记符号来表示计算机指令的语言称为符号语言,也称汇编语言。

在汇编语言中,每一条用符号来表示的汇编指令与计算机机器指令一一对应;记忆难度大大减少了,不仅易于检查和修改程序错误,而且指令、数据的存放位置可以由计算机自动分配。

汇编语言编写的程序称为源程序,计算机不能直接识别和处理源程序,必须通过某种方法将它翻译成为计算机能够理解并执行的机器语言,执行这个翻译工作的程序称为编程序

特点

使用汇编语言编写计算机程序,程序员仍然需要十分熟悉计算机系统的硬件结构,所以从程序设计本身上来看仍然是低效率的、繁琐的。

但正是由于汇编语言与计算机硬件系统关系密切,在某些特定的场合,如对时空效率要求很高的系统核心程序以及实时控制程序等,迄今为止汇编语言仍然是十分有效的程序设计工具。

它有不可替代的特性,比如一些单片机或者一些直接控制硬件的程序就一定要用汇编语言。

(4)、高级语言—近似人类语言&两大类&转换执行—相对简单、通用性好

简介

高级语言是一类接近于人类的自然语言和数学语言的程序设计语言的统称。按照其程序设计的出发点和方式不同,高级语言分为了面向过程的语言和面向对象的语言:

(1)、PHP同时支持面向对象和面向过程的开发,使用上非常灵活。

面向过程的语言:如C语言、Fortran语言、汉语程序设计语言等;

向对象的语言:如C++、VB、C#、Java语言等为代表。支持“程序是相互联系的离散对象集合”,这样一种新的程序设计思维方式,具有封装性、继承性和多态性等特征。

原理

高级语言按照一定的语法规则,由表达各种意义的运算对象和运算方法构成。

用高级语言编写的程序称为源程序,计算机系统不能直接理解和执行,必须通过一个语言处理系统将其转换为计算机系统能够认识、理解的目标程序才能被计算机系统执行

特点

使用高级语言编写程序的优点是:编程相对简单直观易理解不容易出错

高级语言是独立于计算机的,因而用高级语言编写的计算机程序通用性好,具有较好的移植性

2、编程语言对比人类语言

        相比人类的日常交流用语,代码语句的主要特点是简洁、无歧义。实际上,代码语句和军训指令很像,比如立正、向左转、齐步走。但是,计算机不接受歧义和不确定,比如最帅的男生,如果要给出上面的指令,必须提前为计算机定义好—谁是最漂亮的人,或者给定计算机可以进行量化的属性,比如身高=1、眼睛半径=2、发量=3等等。
        如果代码、语句真像军训指令一样种类有限,还贼简洁,那好像不能完成多少事情?
        但实际上,并非如此,
        第一个原因是,因为指令可以针对不同的对象产生不同的效果
        第二个原因是,指令组合起来,也能帮助达成目标。就像前进,朝某方向转、停下,三类指令组合起来,其实已经足够可以指挥到达2D平面上任意地点
        第三个原因是,也是更重要的是,计算机正常逻辑控制,包括条件判断、循环等,这样计算机能够执行更加复杂的任务

3、逻辑控制语句的内容

        一般来说,代码时按照先后顺序依次执行的,有了逻辑控制语句,可以让计算机根据不同条件,跳过执行或者重复执行。

条件判断:简单来说,就是如果某条件为真就执行某行动,不为则真就不执行。我们日常生活中,每天都在经历条件判断,比如外面下雨了,出门就带把伞,出门快迟到了,那就赶紧跑两步,

循环:就是如果某条件为真,则一直重复执行某行动,直至条件为假。就像现实中,你可以在老板心情好的时候,在他眼皮子底下一直打游戏,直到他心情被你整坏了,扣你工资。

        大部分编程语言,其实都有这些类似的语句,虽然长得可能有一点不一样,但逻辑都是相通的。

4、各种语言简介及其对应开发工具

万能的开发工具也有很多……

编程语言

时间

开发工具

特点

汇编语言

Assembly Language

1946

VisualASM

1946年世界上第一台电子计算机问世

C

1972

Turbo C 2

SQL

1974

SQL Server

Oracle SQL Developer

PL/SQL Developer

C++

1979

CFREE(初学者适用)

VC++6.0

Visual C++

Dev-C++

Codeblock

Python

1990

IDLE

PyCharm

VB

1991

visual basic 6.0

2020年3月11日,微软宣布不会再开发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

编程的应用——逻辑控制语句的应用—解决一个迷宫

        逻辑控制语句的应用,比如你要计算机去解决一个迷宫。

1、基于问题设计解决方案

方案一,你可以先自己找到正确路径,然后一步步用代码给出方向指令,这个有点麻烦,要是自己能够解决出来,要计算机何用?

方案二,你可以选择配合判断和循环,写出更灵活的指令,让计算机根据自己是否会撞墙,这个条件去调整下一步。比如,如果前面是墙,无法前进,就换一个当前位置没有去过的方向,继续前进;如果当前位置的所有方向全部试过走不通,就回到更之前的点,尝试新的方向;一直循环,直到找出这一套指令,能让计算机靠自己解出任何带出口的迷宫;

对于方案二,只涉及基本的逻辑控制,像判断、循环,其实没有任何的人工智能。如果不能完全理解这个逻辑,非常正常,不必因此而从入门到放弃,因为背后的思路是回溯法,属于比较高级的算法

2、选择合适的编程语言实现

        当然有了思路以后,要写出实际能够指挥的代码,还是要学习某个具体编程语言的语法,写出对应的语句。另外,也不必担心代码执行时尝试不同方向,因而会花很长时间,因为计算机运算速度远超人类,这些一秒内,解决出来也不在话下。

编程的意义

1、教你如何思考问题

锻炼大脑重塑问题的能力

编程是一种对人的思考进行再思考的行为。我们不需要把每件事情想清楚,就可以在现实社会中生存。对某些从事机械性操作的职业来说,甚至完全不需要进行思考。

但是,在编程时,我们只有在想清楚之后,才能把程序写出来。在编写正确、高效、优雅的程序的同时,我们也在塑造自己的大脑,让它能思考得更清楚、运转得更高效。

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

编程要求我们能够对事物和流程进行拆分,并在不同的抽象层次上进行完整自洽的思考,这使我们有可能去解决那些规模无比庞大的问题。在实现一个稍具规模的需求时,我们不太可能同时考虑主体流程和操作细节,也不太可能同时从多个角度进行思考。经过合理拆分后的需求细粒度需求简单明了,实现难度大大降低的同时,还可以分配给多人来共同进行。

在一个成熟的软件或互联网公司,上千名工程师一起开发同一款产品是很常见的,而你能想象这么多人一起去写一本书么?

提供快速解决问题的方法—抽丝剥茧的能力

编程要求我们客观地去思考事物的本质,将注意力放在事物本身,而不是事物与我们的关系上。当古代的妇女在河边洗脏衣服时,她可能在想:"河水好冷啊……这衣服颜色真漂亮……我家孩子为啥这么调皮……"

而当我们在为洗衣机设计程序时,只会想:"哦,这有一堆脏衣服需要洗"。其实很多原本困扰你许久的问题,只要跳出"我"的范畴,进行"忘我"的思考,就变得特别简单和容易解决。

解决事情落地时的系统性思考能力

编程是将人的想法"实体化"的过程,这要求我们进行更深入、更细致、更全面地思考。为了实现一个需求,你必须对其原理和运转流程了解得十分透彻,否则就无法用编程语言精确地描述出来让机器去执行。

在实体化的过程中,想法的结构缺陷和逻辑漏洞会自然凸显出来,你总会发现存在没有考虑到的可能性,以及需要进一步思考的细节。

参考文章每个人都应该学习编程 - 知乎

2、解决实际问题—提高做事效率

        通过编程,我们能够很容易的处理大量重复性、低效率的工作,从而节省时间。而工作中很多地方都用到了编程来提高生产力,比如 Excel 中的宏,很多 Adobe 的产品(如 Photoshop, Illustrator,)都能使用 JavaScrpt 来自动化工作。
        再比如,如果遇到一个使用 Excel 处理大量数据的需求,不会编程就只能买别人开发好的脚本,或者自己花大量时间做大量重复性的工作,如果学习了编程,可以更好地满足我们这些私人订制化的需求。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多