编程库比喻
⑴ 如果把编程比喻成盖房子。
我觉得比喻相当不恰当。如果确实这么比喻,那我愿意住面向过程的房子。
首先,房屋的整体性很强,你把它分割开来考虑和计算本身就很困难,如果是胡乱分割,那还不如不分割。
其次,面向过程和工具的关系也搞不清楚,我不明白为什么面向过程就是统一工具。
实际上,面向对象和面向过程各自有各自的优势。很多事情自有适合的方式,不恰当的比喻会使得问题越来越复杂。
有些典型的问题是可以多个方面去考虑的,比如象棋:
A:如果从面向过程去说,那应当是,轮流移动上来考虑,即你做了一个动作以后,对方会怎样。
B:如果从面向对象上来说,每一个棋盘上的子都是一个对象,他们都有自己的移动方式,在每一个特定的棋局中,有存在很多对它造成威胁的势力和它可以威胁到的棋子。……
使用面向对象的方式,会使得很多很复杂的问题有一个比较简单的解决方法。但是实际上,问题的复杂程度不会因为你的思考方式的改变而改变,复杂程度本身是不变的。因此,面向对象并不能改变软件本身的复杂性。
⑵ 编程中库是什么意思
例如:#incluede "stdio.h" 这个头文件,就是库的意思
库,也就是里面定义了很多的函数、字段等等
补充:编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。
编程:设计具备逻辑流动作用的一种"可控体系"【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程】
例子:①比如编写一段代码程序②编写一个控制设备体系
⑶ 程序设计 的比喻
程序设计
就像厨师做菜...
从柴米油盐 一直到上层的工具 最上层的就是厨师
厨师面对的是一样样工具(可理解为操作系统应用程序接口,也可以理解为别人制作的框架...),这些工具是别人根据更底层的接口 制作出来的...
更底层的是什么..是钢铁--->锅碗瓢盆
是种子--->粮食,肥料
.......
而编程 就是用别人做好的这些工具,,锅碗瓢盆,柴米油盐来操作 制定出一定的操作次序...
锅碗瓢盆是工具,柴米油盐是数据...
程序员就是用工具 将数据经过一定处理 最后完成一个作品
⑷ 百战程序员:编程语言到底有多少种
这个有很多种的,下面讲解写常遇到的。把编程语言比喻成车:
Ada 是辆丑到极点但是永远不会出故障的坦克。
C 是辆赛车,它能跑得超乎想象得快,不过每跑个 50 英里就会抛锚。
Cobol 号称是辆车,不过没有哪个有自尊心的驾驶员肯承认曾经开过。
C# 是辆竞争模式的家庭旅行车。一旦你开过它,你就不会再用其他竞品厂商的产品了。
C++ 是辆大马力版本的 C 型赛车,它额外提供了成打的特性,而且每跑 250 英里才会抛锚,不过当它真出问题的时候,没有人能找到究竟是哪儿坏了。
Eiffel 是辆内置了法国口音驾驶说明的汽车。他会帮你快速地找到错误并从中学到东西,不过你要是敢跟他争论的话,他会骂你然后把你从车里扔出去。[来自 Daniel Prager ,稍有修改]
Erlang 是一个车队,它们会互相协作把你送到任何你想去的地方。想要每只脚各自操纵一辆车还是需要一些练习的,不过一旦学会了之后你就可以驾驶着它们通往其他方式难以企及的地方了。还有,你用了那么多辆车,所以就算有几辆坏掉也没什么可担心的。
Forth 是你亲手用套件组装出来的车。你这辆车不论长相还是功能都没必要和别人的一样。不过,Forth 型号的车只能倒着走。
[Digg.com 网站上的评论,来自 256byteram(我忍不住要把它加上):]
FORTH LOVE IF HONK THEN !(译注:抱歉我实在不知道这句话是啥意思……)
Fortran 是辆非常原始的车。它能跑得很快,前提是你要始终在完全笔直的道路上开。据说学开 Fortran 型汽车会导致你再也没法学开其他型号的汽车了。
Java
Java 是辆家庭旅行车。它驾驶起来很容易,开起来速度也不会太快,不至于伤到你自己。
版本1:Haskell是辆设计极端优雅漂亮的车,传闻它能开到非常极端的地形中去。当你试图驾驶它的时候,它并不是真的沿着道路在前进的;实际上,它是不断把自己和道路进行复制,每次成功复制之后,车在路上都会比上一次更远一点。应该还是有可能按照传统的方式来驾驶它的,不过你的数学能力不足以找出这个办法来。
版本2:Haskell 并不是辆真的车,它是一个抽象的机器,能够详细地告诉你驾驶这个过程应该是什么样子的,如果你愿意的话。你必须把这个抽象的机器放到另一台实际的机器里面才能开动它,别问这个实际的机器是怎么运行的。还有一种方法,你可以用多台抽象的机器造出另一台抽象的机器,然后把它交给那台实际的机器,这样就能一个接一个地完成你的旅途了。[Monadic 的版本]
版本1:Lisp 看起来像一辆车,不过经过足够的改装,就能把它变成非常有效的一架飞机或一艘潜艇。
版本2:一开始它看起来一点儿都不像一辆车,不过时不时地你也能看到有人在开着它转悠。终于有一天你决定多了解一下它,然后你意识到它其实是一辆能造出更多汽车的汽车。你把这个发现告诉了朋友,不过他们都大笑着说这些车看起来太奇怪了。至今你仍在车库里留着一辆,期待着哪天能把它开上路去。[来自 Paul Tanimoto]
Mathematica是辆设计得很好的车,它从 Lisp 型汽车那里借鉴了大量的东西,却连一点儿应得的赞扬都不给它。它能通过方程计算出到达目的地最高效的路径,只不过这要花上一大笔钱。
是辆设计给新手用的短途旅行车,通常都是开往那些 Mathmatica 型汽车常去的地方。在那些地方这车开起来非常舒服,不过只要你偏离了路线,哪怕只有一点点,它就会变得非常难以驾驭,以致于很多势利的司机根本就不承认它是一辆车。
Ocaml 是辆非常性感的欧洲车。它不像 C 那么快,但它从不出故障,所以结果你反而会花更短的时间到达目的地。不过因为这是法国,所有的控制装置都不在它们平时该在的地方。
Perl 应该是辆挺酷的车,不过驾驶员手册却难以理解。另外,就算你能找到方法去驾驶一辆 Perl 型号的车,你也开不起来别人的 Perl 型汽车。
PHP 是辆热狗车(Oscar Mayer Wienermobile),它非常古怪、又难以驾驭,但是所有人却还是想开它。[来自 digg.com 网站的 CosmicJustice]
版本1:Prolog 是全自动的:你告诉它你的目的地是什么样子的,然后剩下的驾驶工作它就全搞定了。[Paul Graham附加的:]不过,大多数情况下,确认目的地所花的工夫,和你直接开过去也差不多了。
版本2:Prolog 这辆车上装了一个独特的试错型 GPS 系统。在通往目的地的路上,它会一直往前开,如果走到死胡同了,它就调头回来再试试别的路,如此不断往复,一直到目的地为止。[我忘了是谁建议的这一条]
Python 是辆非常棒的给初学者用的车,就算没有驾照也能开。除非你想开得超级快,或者想开去很危险的地方,否则你可能永远都用不到别的车。
Ruby 这辆车是因为一次 Perl、Python 和 Smalltalk 三车相撞事故产生的。一个日本的机师找到了这些车的碎片然后拼成了一辆车,很多司机都觉得这比那三辆车加在一起还要好。不过也有些司机会发牢骚说 Ruby 型汽车的好多控制器都是重复的、甚至有三份,而这些重复的控制器在某些特别的情况下又稍有不同,这会让这车开起来更麻烦。据传说重新设计的工作已经在进行中了。
Smalltalk 是辆小型汽车,原本是设计给那些打算学驾驶的人用的,不过因为它设计得太棒了,即使那些有经验的老司机都喜欢开它。它速度并没有很快,不过你可以把它的任何一个零部件拿下来改造改造,让它更符合你的期待。古怪的事情是,你其实并没有真正地驾驶它,你只是发了条消息让它去什么地方,然后它要么就开过去了,要么就告诉你它不懂你在说啥。
版本1:汇编就只是个发动机。你得自己把车子造出来,还得在它跑的时候手动给它加油。不过只要你足够小心,它就能像来自地狱的蝙蝠(a bat out of hell)一样飞速前进。
版本2:汇编:你自己就是那辆车。
如果编程语言是种武器:
C 语言是 M1 式加兰德步枪,很老但可靠。
C++是双截棍,挥舞起来很强悍,很吸引人,但需要你多年的磨练来掌握,很多人希望改用别的武器。
Java 是 M240 通用弹夹式自动机枪,有时它的弹夹是圆的,但有时候不是,如果不是,当你开火时,会遇到 NullPointerException 问题,枪就会爆炸,你被炸死。
Scala 是 M240 通用机枪的变种,但它的使用手册是用一种看不懂的方言写的,很多人怀疑那只是一些梦话。
JavaScript 是一把宝剑,但没有剑柄。
Go 语言是一种自制的“if err != nil”发令枪,每一次发射后,你都必须要检查它是否真的发射了。
Rust 语言是一种 3D 打印出的枪。将来也许真的能派上用场。
bash 是一个十分碍手的锤子,你抡起它时会发现所有东西看起来都像钉子,尤其是你的指头。
Ruby 是一把外嵌红宝石的宝刀,人们使用它通常是因为看起来很炫。
PHP 是水管子,你通常会把它的一段接到汽车的排气管,另一端插进车窗里,然后你坐进车里,开动引擎。
Mathematica 是一种地球低轨道粒子大炮,它也许能够干出很神奇的事情,但只有付得起费用的人才能使用它。
C#是一种强悍的激光大炮,架在一头驴子上,如果从驴子上卸下来,它好像就发不出激光。
Prolog 语言是一种人工智能武器,你告诉它要做什么,它会照做不误,但之后,它会弄几个终结者出来,烧掉你的房子。
Lisp 语言是一把剃须刀,有很多款式。只有寻求刺激和危险的人才会使用它。
希望可以帮到您,谢谢!
⑸ 在学习编程语言时常说的库是什么意思
很多语言中都有“库”这个概念,即“library”。最简单的理解方式就是:“库”就是别人已经编写好的程序集或者源文件,可以被其它程序引用,从而达到“写一次,用多次”的目的。
“库”一般都是为了某个特殊目的开发的。打个比方,一双鞋子是怎么造出来的?有的人专门生产鞋带,有的造鞋底,有的做布料,还有的专门设计商标,或许还有一些人设计包装盒,如果你能获得这些东西,你就可以把他们组合起来,然后加入你自己的设计,做一双你自己的鞋子。但是,布料不仅仅可以用来做鞋子,同理,商标也可以用来印刷广告,而不仅仅是贴在鞋子上,包装盒可以不用来装鞋子,而是包装其它东西。用相同的原料,你做出了一双鞋子,别人有可能做出了一条裤子。
这就是“库”,很多程序都用了相同的“库”,但是开发出了完全不一样的程序,使用“库”,可以避免重新编写别人已经开发出来的程序,把这些“库”加到你自己的程序中,可以节省很多时间,同时保证了稳定性,因为大家都用这些“库”,大部分毛病早就被挑光了,而你自己再重新写一个程序有可能漏洞百出,又花了时间,得不偿失。
有些“库”是可以增强功能的,而有些“库”则是完成你的程序必须的。前者比如说最经典的C语言,引入stdio.h头文件,就引入了“库”中的一个功能:你可以使用printf函数了;后者比如说Windows编程中的windows.h头文件,几乎所有Windows程序都会用到这个来和系统底层进行交流。
⑹ 编程 到底是什么详细解释
我认为楼上的食谱的比喻不是很恰当。
因为食谱是一种工作流,描述的是先干什么后干什么以及所用的资源和时间,而程序除了可以被看成一种工作流之外,还可以被看成一种生成工作流的逻辑描述,也就是说,除了要安排好食谱中的步骤,还要知道食材和步骤的逻辑关系,比如是先炒后炖还是先炖后炒,是先放油盐酱醋还是后放油盐酱醋,什么东西和什么东西不能放一起等等。这些是通过编程和程序中的逻辑判断来实现的,这种逻辑判断在食谱中是没有的(例如,食谱中是不会出现"如果炒糊了就放点糖"这样的描述的)。因此,食谱只是单纯的流程描述,编程和程序是比食谱更高级和复杂的概念。
其实,编程用大白话来说,就是如何控制计算机利用各种硬件资源来处理数据和信息。因此,编程分为几个层级。最底层是直接与硬件打交道的,用来控制硬件的执行,一般是汇编编程;最上面的是软件编程,直接处理数据和信息,编写的程序直接面向程序的使用者;在他们之间的是操作系统级编程,用来建立连接底层和上层的桥梁。每一层就不展开说了,否则都够写几本书了。
大多数程序员都属于软件编程这个层级的,其他的程序员一般都必须非常了解他们使用的硬件,因为他们的程序就是要操作这些硬件的。
说完了编程的分类,再来说说编程到底干什么。我也来比喻一下,我把编程比喻成教育,计算机就是小孩,综合起来就是教计算机做什么以及怎么做,也就是教育小孩做事情,而编程写出来的程序,就是一种行为规范。
比如,我要教小孩过马路,那么我告诉他一个过马路的行为规范:"先向左看,如果没车过来就走到路中央,如果有车就等车过去;到了路中央向右看,如果没车就过去,如果有车就等一等。"
我把这个过马路的"行为规范"(程序)告诉我的"小孩"(计算机),他就能严格照着去执行。
这个比喻不恰当的地方,就是我的"小孩"的学习能力实在有限,他只会照着我写好的"行为规范"去做,我没写的他就不知道怎么做了。但是,将来的"小孩"肯定会增强自己的学习能力,通过"行为规范"来产生新的"行为规范",并且新的"教育方法"(编程方法)也在不断的被研究着。