程序=算法+数据结构
程序就是一系列有序执行的指令集合。
第一个答案对于大多数人其实等于没有回答,因为算法这个概念可能是一个比程序更为复杂的概念。
第二个答案算是有点容易明白,但还不能让人明白程序能做什么不能做什么。
一,菜谱
材料: 五花肉半斤,尖椒一个,青蒜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坐标减去了一定的值,最终再输出到显示器上。
比如你在纸上解了一个方程,那么在计算机也有一个模拟你每一步的计算的过程来得出和你一样的值。只是你用纸和笔来进行,而计算机用它的方式来进行。
先写个老段子:
程序员的老婆让程序员回家路上带两斤包子,如果看到卖西瓜的,带一个回来。晚上程序员回家,只带了一个包子,老婆大怒,为啥只带了一个包子,程序员委屈的说,因为遇到卖西瓜的了。
这其实就是个关于逻辑的段子,因为表述不明确,从而导致逻辑判断出现了偏差,当然我们知道现实中程序员没这么呆,但这也暴露一个典型的问题,现实中,我们日常口语的沟通和表达中,逻辑,往往不是那么严谨,而这,其实通常并不影响日常的交流。如果说我们非要强调每个人都用严谨的逻辑做日常的沟通,可能也是不合时宜的。
但我认为,完全没逻辑,不以为耻反以为荣的,简直可怕,然而,这是生活中的大多数。
就例如:
一个女生由闺蜜陪着去一个店里看东西,店员势利眼,于是闺蜜大怒,为这个女生买下诸多名贵商品,扬长而去,女生如何感动莫名云云。 我看了就觉得恶心,因为对方势利眼,瞧不起你,你就让对方抽你的佣金,送钱给她,你这是扬眉吐气呢,还是犯贱呢?因为犯贱而感动,你脑子里是缺根弦呢,还是缺根弦呢? 遇到势利眼的人,转身离开是最好的选择,你需要对这样的人证明自己么?你需要为了证明自己给对方送钱么? 这就是没有逻辑,愚蠢透顶的表现,而且助长了他们势利眼的表现,表面上他们对你面带微笑充满感激,内心依然是嘲笑你不过是个没脑子的2b,然而大部分网民,会认为这样很爽,很解气。
所以我们要培养自己的逻辑思维能力,不断学习新的知识。跟着逻辑思维能力好的朋友一起学习,学习其能力,增强自己的逻辑思维能力。只要条件为真就会循环,跳过=0死循环,right
#include "Stdioh"
#include "Conioh"
int main(void) (如果跳过=0的情况不就死循环了吗)
{
/ 此处添加你自己的代码 /
int i=0;
int n=1020;
while(n > 0)
{
n=n/2-2;
i++;
}
printf("%d",i);
getch();
return 0;
}
:
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。
语言特点:
1简单性
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的 *** 作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。
2面向对象
Java是一个面向对象的语言。对程序员来说,这意味着要注意其中的数据和 *** 纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和 *** 作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(javaawt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(javaio包)和支持网络功能的类(javanet包)。
3分布性
Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。
网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。
4编译和解释性
Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。
在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。
你找个有西瓜和西红柿的菜市场,告诉他,去买一个西瓜,如果看见西红柿,就买两个。
要是买回来一个西瓜和两个西红柿,他就不是真正的程序员,
真正的程序员会买回来两个西瓜。
程序员,他们想的是什么他们想的永远都是技术,他们崇尚的也永远都是技术。下面是我给大家整理的疯狂的程序员励志语录,供大家参阅!
疯狂的程序员励志语录(一)
1 IT人表示屁股上还得纹一个,要不中间来个helloworld!
2 知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。
3 学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览群书。
4 保存好你做过的所有的源文件----那是你最好的积累之一。
5 把学到的东西教给别人,无论是口口相授还是文以载道,你都会发现自己也能从这个过程中收获良多。
6 找到旁人写的这样一些代码——它们实现了重要的功能,但写得并不够聪明。重写它们,然后告诉自己永远不要犯相同的错误。
7 经理往往认为“程序员A=程序员B”,因为他们工作的年头差不多。但实际上,他们的效率可能相差十倍甚至百倍。
8 软件开发的时间通常是这样的:一开始的90%开发工作用掉了整个计划90%的时间,剩下的10%同样需要整个计划90%的时间,而最终发布前的修改也是如此。
9 设计软件有两种方法:一种是简单到明显没有缺陷,另一种复杂到缺陷不那么明显。
10 一门技术必须多用才能掌握,最好的办法是在项目中运用。如果你在真实的项目中使用了某一项技术,那么印象就会非常深刻。即使忘记,也能很快捡起来。
11 不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。
12 A:你在哪自习B:教南404。A:好的,我来了。B:……A:你怎么还没来要这么久么B:404notfound!
13 真正的程序员喜欢兼卖爆米花,他们利用CPU散发出的热量做爆米花,可以根据米花爆裂的速度听出正在运行什么程序。
14 十年生死两茫茫,写程序,到天亮。千行代码,Bug何处藏。纵使上线又怎样,朝令改,夕断肠。领导每天新想法,天天改,日日忙。相顾无言,惟有泪千行。每晚灯火阑珊处,夜难寐,又加班。
15 老婆给当程序员的老公打电话:“下班顺路买三个包子带回来,如果看到卖西瓜的,买一个。”当晚,程序员老公手捧一个包子进了家门……老婆怒道:“你怎么就买了一个包子!”老公答曰:“因为看到了卖西瓜的。”
16 程序员爱情观:爱情就是死循环,一旦执行就陷进去了;爱上一个人,就是内存泄漏–你永远释放不了;真正爱上一个人的时候,那就是常量限定,永远不会改变;女朋友就是私有变量,只有我这个类才能调用;情人就是指针用的时候一定要注意,要不然就带来巨大的灾难。
17 A:借我1000块。B:拿去,1024,我给你凑了个整儿。
18 程序员对测试人员说:"在我机器上没问题啊!""我测试了一下,确实在我机器上没问题啊"
19 少壮不努力,老大写程序。
20 世界上只有两句真理:1。人一定会死。2。程序一定有Bug。
疯狂的程序员励志语录(二)
1、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。
2、调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。
3、如果你喜欢底层开发,千万不要勉强自己去搞VC,找到你最真实的想法,程序员最不能忍受的就是万精油。
4、非优秀的程序员常常把空间和时间消耗殆尽,优秀的程序员则总是有足够的空间和时间去完成编程任务,而且配合近乎完美。
5、程序员是值得尊敬的,程序员的双手是魔术师的双手,他们把枯燥无味的代码变成了丰富多彩的软件。
6、一个人静静坐在电脑面前写代码的感觉,那是什么感觉那是武林高手闭关修炼的感觉。
7、硬的怕横的,横的怕不要命的,疯子都是不要命的,所以疯子力量大,程序员只有一种,疯狂的程序员。
8、“设计是一个发现问题、而不是发现解决方案的过程”
9、“功能说明书里不存在可 *** 作性”
10、“过去的代码都是未经测试的代码”
11、“任何傻瓜都能写出计算机可以理解的代码。好的程序员能写出人能读懂的代码”
12、“测试是来表明bug的存在而不是不存在”
13、“简单不先于复杂,而是在复杂之后”
14、“Real developers ship”
15、“没有绝世神功”
16、“过去的33年里,我每天早上看着镜子问自己:“今天是我生命的最后一天吗我是否要去做今天该做的事”一天一天太多次是“不是”,我知道这需要改变…所有的事情——所有身外的期望,所有的骄傲,所有的对困难和失败的恐惧——这些东西在死亡面前立刻消失的无影无踪,只剩下真正重要的东西。想着自己即将死去,这是让我避免落入担心失去什么的陷阱里的最好的方法。”
疯狂的程序员励志语录(三)
1、作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。
2、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。
3、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。
4、程序不是年轻的专利,但是,他属于年轻。
5、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。
6、一个好汉三个帮,程序员同样如此。
7、一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头。
8、调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。
9、程序是我的生命,但我相信爱她甚过爱我的生命。
10、信念和目标,必须永远洋溢在程序员内心。
11、就算我们站在群山之颠,也别忘记雄鹰依旧能从我们头顶飞过。骄傲是比用JAVA进行底层开发更可笑的东西。
12、这句话不是很文雅,彻底鄙视那些害怕别人超越自己而拒绝回答别人问题的程序员。
13、如果调试一个程序让你很苦恼,千万不要放弃,成功永远在拐角之后,除非你走到拐角,否则你永远不知道你离他多远,所以,请记住,坚持不懈,直到成功。
14、最累的时候,家人是你最好的归宿。
15、退一步海阔天空,这是一种应有的心境。
16、如果你喜欢底层开发,千万不要勉强自己去搞VC,找到你最真实的想法,程序员最不能忍受的就是万精油。
17、IF(BOOL 学习= =FALSE)BOOL 落后=TRUE;不断的学习,我们才能不断的前进。
18、你的一个程序有时正常有时不正常,而你已经完全遵循编程的规则,为什么事实上我认为相信只要遵循别人所说就能得到想当然的结果的人其实是个傻瓜。
19、编程中我们会遇到多少挫折表放弃,沙漠尽头必是绿洲。
20、非优秀的程序员常常把空间和时间消耗殆尽,优秀的程序员则总是有足够的空间和时间去完成编程任务,而且配合近乎完美。
21、我们应该重视团队的精神,一个人作用再大,也不过是一碗水中比较大的一粒水珠而已。
22、无私奉献不是天方夜谭,有时候,我们也可以做到。
以上就是关于程序啥意思全部的内容,包括:程序啥意思、脑袋没有一个对外界的逻辑的东西,为什么、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完 提示:可用循环实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)