程序就是一系列有序执行的指令集合。
第一个答案对于大多数人其实等于没有回答,因为算法这个概念可能是一个比程序更为复杂的概念。
第二个答案算是有点容易明白,但还不能让人明白程序能做什么不能做什么。
一,菜谱
材料: 五花肉半斤,尖椒一个,青蒜4-5根,(其实正宗的回锅肉还要放豆干,再放根红椒点缀,咱家没有,省略了),白糖2茶勺,生抽1汤勺,盐2克,鸡精,料酒,姜片,葱段;蒜片,郫县豆瓣酱1汤勺
做法: 预先处理:将整块五花肉放入热水中煮熟(筷子扎下去可以扎透),期间点些料酒,放两片姜,两三段葱;然后放入冷水中冷却。其中,冷水中冷却的步骤可以使肉快速收缩,帮助成型,增加嚼劲儿,是普通厨子变大厨的关键步骤,不可省略哈。
青椒切菱形段,青蒜拍一下蒜头,切寸段。蒜头和蒜叶分开放。
预先处理过的五花肉切薄片,越薄越好。俺就这刀工了,算比较厚的啊。
蒜拍碎(没拍),郫县豆瓣剁成茸(碎点儿好看也好吃)。
处理好的肉片下油锅,旺火煸炒。直至肉片打卷,变得焦黄。
将超好的肉片拨至一边,下入蒜末和郫县豆瓣,用小火炒出红油。
倒入尖椒段和青蒜蒜头,烹入糖,生抽,盐。注意:郫县豆瓣酱和生抽均有咸度,盐一定要酌情放。
待尖椒和蒜头香味出来,放入青蒜叶及鸡精兜匀。青蒜叶熟的很快,这个步骤只需要30秒或者更短,只要看到青蒜叶被油裹住就可以了。
出锅
以上是网上找的一个回锅肉的菜谱(貌似这个下酒好)。从广义的角度来说这也是一个程序,怎么说呢?
这个程序与计算机程序略微不一样,这个程序的运行者是一个可以认识上面的文字,能正确理解每句话的意义,且有能力得到材料并按步骤执行的人。而计算机程序则是计算机可以理解和执行语句。
二,为什么要有编程语言
就像上面的菜谱一样,我们只要识得汉字基本都可以照着来执行。为什么要有让人看起怎么都不能一下就接受的编程语言呢?
自然语言有歧义
男老师发现一女生上课睡觉,气愤的说:我在上面累的要死,你在下面一动不动!不配合也就罢了,连点反应都没有,将来要是肚子里没东西,可别怪老师不行!
中国足球队谁也打不赢。中国乒乓球队谁也打不赢。
冬天太冷,出门时衣服能穿多少就穿多少。夏天太热,出门时衣服能穿多少就穿多少。
地铁里听到一个女孩大概是给男朋友打电话,“我已经到西直门了,你快出来往地铁站走。如果你到了,我还没到,你就等着吧。如果我到了,你还没到,你就等着吧。”
老婆给当程序员的老公打电话:下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。当晚,程序员老公手捧一个包子进了家门…老婆怒道:你怎么就买了一个包子?!老公答曰:因为看到了卖西瓜的。
这是几则最典型的汉语歧义,其它语种中一样有很多这样的歧义。看最后程序员这则,那么就是老婆下了一系列指令但是执行者按照另一种意义去执行了。当然这例子还有不恰当的地方,我们也可以将指令改为:“下班顺路买一斤包子带回来,另外如果看到卖西瓜的,买一个西瓜。”。但是麻烦就在汉语本身并未限制我们必须如此,另外其它例子中的用法那就更加不容易确定意义了,还牵扯到语境。所以到今天为止计算机在处理自然语言上都还很糟糕。
自然语言不稳定
666, 虾米, 酱紫, 沙发, 粉丝
以上这些词语在有了网络后就多了一层意思,不上网的人可能根本不知道这多出一层意思。当然不稳定本质上还是带来歧义。
因为这些原因才有数学语言(其实一样有歧义,不然就不会产生数理逻辑这个分支了)、编程语言来规避歧义。
三,程序是什么
这真是一个不好下定义的词,比较可靠的回答都要涉及数理逻辑。无论是递归函数论、图灵机模型、lambda演算都不是那么容易掌握的。这些远比学一门编程语言及掌握写程序更难。所以在这里我们先只给出一个形象的比喻,程序就是一段编译器或解释器(这东西可能比任何人都要听你的话,只要你能用它懂的语言来指挥)能听懂的指令。
打开微信我们可以指挥微信,我们可以给好友发信息,可以加好友,可以发朋友圈,我们下什么指令它就做什么,我们下指令是通过点击屏幕。而编译器与解释器也是类似的东西,不过这东西它只接受它认识的指令,它接受指令都是文字(主要是英文,数字,标点)。
四,计算、同构、模拟
对于同一件事比如我们要计算3+5,那么我们可以有:
扳着手指头左手3个,右手5个放在一起是8个手指头
先拿出3个小球,再拿出5个小球放在一起是8个小球
我们在计算器输入3+5得出8
这三个方法都可以计算出3+5的值,他们用了不同方法的形式但在对于计算3+5这个核心上是计算等价的。也就是同构的概念。
有了同构我们就可以模拟了,比如你有小球,拿它做了一次加法运算。但是我没有小球我可以用手指头或者石子来代替小球模拟你用小球做加法运算,并且得出和你一样的结果。
我们是怎么用程序来事的呢?主要就是用计算机中的数据来模拟现实中的东西。
比如摄像头中的你脑袋往左移了一下,那么本质上计算机中代表脑袋的那些数据的x坐标减去了一定的值,最终再输出到显示器上。
比如你在纸上解了一个方程,那么在计算机也有一个模拟你每一步的计算的过程来得出和你一样的值。只是你用纸和笔来进行,而计算机用它的方式来进行。
计算机程序的定义LJ程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。 程序(港台称之为程式) program(me)或procere chéng xù
编辑本段概念
概念1.:为进行某活动或过程所规定的途径。 概念2.程序是由序列组成的,告诉计算机如何完成一个具体的任务。由于现在的计算机还不能理解人类的自然语言,所以还不能用自然语言编写计算机程序。
编辑本段指示计算机按解决问题的步骤
实现预期目的而进行 *** 作的一系列语句和指令。一般分为系统程序和应用程序两大类。 计算机中的程序在港澳台地区称为程式。程序就是为使电子计算机执行一个或多个 *** 作,或执行某一任务,按序设计的计算机指令的集合。由程序计数器(Program Counter)控制。程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。是用汇编语言、高级语言等开发编制出来的可以运行的文件,在计算机中称可执行文件(后缀名一般为.exe)。我们玩的游戏一般都是应用程序(但现在后缀名为.swf的Flash影片类的游戏也比较流行)
程序设计程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。专业的程序设计人员常被称为程序员。
定义
程序设计=数据结构+算法
程序设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。由于程序是软件的本体,软件的质量主要通过程序的质量来体现,在软件研究中,程序设计的工作非常重要,内容涉及到有关的基本概念、工具、方法以及方法学等。程序设计通常分为问题建摸,算法设计,编写代码,编译调试和整理并写出文档资料五个阶段。
按照结构性质,有结构化程序设计与非结构化程序设计之分。前者是指具有结构性的程序设计方法与过程。它具有由基本结构构成复杂结构的层次性,后者反之。按照用户的要求,有过程式程序设计与非过程式程序设计之分。前者是指使用过程式程序设计语言的程序设计,后者指非过程式程序设计语言的程序设计。按照程序设计的成分性质,有顺序程序设计、并发程序设计、并行程序设计、分布式程序设计之分。按照程序设计风格,有逻辑式程序设计、函数式程序设计、对象式程序设计之分。
程序设计的基本概念有程序、数据、子程序、子例程、协同例程、模块以及顺序性、并发性、并行性、和分布性等。程序是程序设计中最为基本的概念,子程序和协同例程都是为了便于进行程序设计而建立的程序设计基本单位,顺序性、并发性、并行性和分布性反映程序的内在特性。
程序设计规范是进行程序设计的具体规定。程序设计是软件开发工作的重要部分,而软件开发是工程性的工作,所以要有规范。语言影响程序设计的功效以及软件的可靠性、易读性和易维护性。专用程序为软件人员提供合适的环境,便于进行程序设计工作。
语言
(Programming Language)
是用于编写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言包含三个方面,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成程序的各个记号之间的组合规则,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,亦即表示按照各种方法所表示的各个记号的特定含义,但也不涉及使用着,语用表示程序与使用的关系。
语言的分类
程序设计语言的基本成分有:①数据成分,用于描述程序所涉及的数据;②运算成分,用以描述程序中所包含的运算;③控制成分,用以描述程序中所包含的控制;④传输成分,用以表达程序中数据的传输。
程序设计语言程序设计 程序设计语言 计算机 IT按照语言级别可以分为低级语言和高级语言。低级语言有机器语言和汇编语言。低级语言与特定的机器有关、功效高,但使用复杂、繁琐、费时、易出差错。机器语言是表示成数码形式的机器基本指令集,或者是 *** 作码经过符号化的基本指令集。汇编语言是机器语言中地址部分符号化的结果,或进一步包括宏构造。高级语言的表示方法要比低级语言更接近于待解问题的表示方法,其特点是在一定程度上与具体机器无关,易学、易用、易维护。
程序设计语言按照用户的要求有过程式语言和非过程式语言之分。过程式语言的主要特征是,用户可以指明一列可顺序执行的运算,以表示相应的计算过程,如FORTRAN、COBOL、PASCAL等。
按照应用范围,有通用语言与专用语言之分。如FORTRAN、COLBAL、PASCAL、C语言等都是通用语言。目标单一的语言称为专用语言,如APT等。
按照使用方式,有交互式语言和非交互式语言之分。具有反映人机交互作用的语言成分的语言成为交互式语言,如BASIC等。不反映人机交互作用的语言称为非交互式语言,如FORTRAN、COBOL、ALGOL69、PASCAL、C语言等都是非交互式语言。
按照成分性质,有顺序语言、并发语言和分布语言之分。只含顺序成分的语言称为顺序语言,如FORTRAN、C语言等。含有并发成分的语言称为并发语言,如PASCAL、Modula和Ada等。
程序设计语言是软件的重要方面,其发展趋势是模块化、简明化、形式化、并行化和可视化。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)