导航:首页 > 编程知识 > 如何把编程语言比喻成某种工具

如何把编程语言比喻成某种工具

发布时间:2023-03-31 09:34:02

A. 编程语言和编程工具各是什么

哈哈,你这个理解有误。

这些说起来很复杂,牵扯到很多东西,所以我只好说一种最浅显的意思吧,希望你看懂之后再深思,就应该会明白了。

编程语言,可以用我们和外国人对话时候使用外语一个道理。我们是要用一种对方能听的懂的话,表达自己的意思。
计算机语言也是这个意思,就是我们用它能听懂的话,让他明白你的意思。

编程语言和工具是密不可分的,因为虽然市面上有各种计算机编程语言,但是他们都是一个原理,也就是翻译。

编程工具,把我们认识的编程语言翻译成机器码,告诉计算机,然后再把计算机的回馈转换成我们看得懂的东西,呈现在你的眼前。

其实就好比一个两个人,A只会说汉语,B只会说法语,这时候就需要一个精通中法两种语言的人来翻译了。这个翻译,也就是编程工具。

B. “语言只是工具,编程思维才是最重要的”,我信你个鬼

还记得我刚学编程那会儿,时不时会在网上看到或者亲耳听到一句话:“语言只是工具,编程思维才是最重要的”。我对此深信不疑。我现在想说:“你这个闷亏糟老头子坏得很,我信你个鬼!”。这句话本身是没有错的,但是对一个初祥灶学者而言,这句话并不是那么合适,至于为什么?我讲讲我的理解吧。

我刚上大学那会儿,很崇拜那些编程很厉害的学长或者某些有编程经验的同学,所以我把他们所说的“语言只是工具,编程思维才是最重要的”这句话作为我学习路上的指导!所以我并没有刻意地学习某一门编程语言,而是接触了很多很多语言,也一直在思考什么才是编程思维,过程中着重体会各个编程语言中的编程思想,结果发现思维越来越混乱了。

我相信很多学习编程的同学都会遇到一个问题:同时学习几门编程语言时,很容易把语法搞混了。可能我在写Java的时候用到了PHP的语法,写C++的时候却写成了Python的语句。慢慢地,心里就会比较烦躁。到底什么是编程思维呢:数据结构、算法还是经验?其实语言与语言之间的区别还是很大的,数据结构之间的差别也很大,比如编程语言中的函数形参和实参之间的关系,到底是传值还是传引用呢?

Python的传递规则是:可变类型(list,dict)等参数是传引用,而不可变类型如元祖、字符串传的则是值,传引用也要考虑是浅拷贝还是深拷贝。而C++则可以自己控制到底是传值、传引用还是传指针。思来想去,就这么一个函数传参的问题,Java、Python、PHP、Golang、C++就各不相同。

试想,不同的编程语言在这么小的点上都有那么多不同,我们要想掌握所有编程语言中的编程思想和语法是多么困难啊。那么“语言只是工具,编程思维才是最重要的”这句话究竟有没有道理呢?其实这句话说得是很好的,但是不适用于所有人。只有你在某一门编程语言(技术)中进行了深耕,对其有了一定的理解之后,才能很好地利用这句话。

这句话的意思并不是“重视编程思维,看轻编程语言”,它讲的是“触类旁通”。当你对一门编程语言有了较深的理解之后,在学习其他编程语言的时候就可以借鉴你较为熟悉的编程语言中蕴含的编程思想。这样就能更快地上手新技术。

但其实,很少有人能同时对多门编程语言做到精通或熟悉。

刚开始学习编程的时候,我们一定要先选定一门编程语言作为主航道,然后再学习其对应的数据结构,用其实现算法,并做一些项目。如果只是学会了语法,就算能用这门编程语言刷几道题,并不算是真的会这门语言。

我们在学习的路上不能贪多,在我看来:作为初学者,同样是一年的时间,我宁愿去学习一门编程语言,也不愿拿12个月分别学习12门编程语言。虽然从表面看来,会很多编程语言的同学和谁都能谈上几句,知识面广,但是真的到了做项目,需要用到一些比较深刻知识的时候,他肚子里面是没有什么墨水的。

现在各个公司招聘,不也要求应聘者能有自己最擅长的一门技术么?

大家除了要定好自己的主航道,在选择方向的时候也要格外慎重。虽然现在谈论“A语言好还是B语言好”这种话题会显得特别不专业,有时还会被很多人喷,但是不同技术的发展前景确实是不一样的。某些语言有其独特的生态,可以对应到一个技术蚂宴神栈,其就业前景和发展前景相较其他语言就会不一样。比如,如果你想从事大数据相关的行业,Java就一定是比PHP好的。最好不要因为某一门技术简单而去选择它,也不要单凭别人的看法而去跟风学习一些技术,最好还是自己做好调研,结合兴趣点和技术的发展前景去选择,这样的效果可能会更好。

“语言只是工具,编程思维才是最重要的”这句话对于初学者而言,就像“适量盐,适量糖,适量生抽”对不会做饭的人一样,没有意义。你这个糟老头子坏得很,我信你个鬼!

C. “编程”是什么意思

编程
这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。
1、C语言
如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。C语言是Dennis
Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。
C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的“空心粉式代码”代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。
正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独立的汇编模块。
优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。
缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。
移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。
用C语言编写的游戏:非常非常多。
资料:C语言的经典著作是《The
C
Programming
Language》,它经过多次修改,已经扩展到最初的三倍大,但它仍然是介绍C的优秀书本。一本极好的教程是《The
Waite
Group's
C
Primer
Plus》。
2、C++
C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。
C++总是辩论的主题,尤其是在游戏开发论坛里。有几项C++的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C++程序将变得比相同功能的C程序来得大和慢。C++的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且不可能很快得出结论的争论。
我认为,C++的额外开支只是使用更好的语言的小付出。同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇编成为语言所选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。
优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。
缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。
移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。
使用C++编写的游戏:非常非常多。大多数的商业游戏是使用C或C++编写的。
资料:最新版的《The
C++
Programming
Language》非常好。作为教程,有两个阵营,一个假定你知道C,另外一个假定你不知道。到目前为止,最好的C++教程是《Who's
Afraid
of
C++》,如果你已经熟知C,那么试一下《Teach
Yourself
C++》。
3、我该学习C++或是该从C开始
我不喜欢这种说法,但它是继“我该使用哪门语言”之后最经常被问及的问题。很不幸,不存在标准答案。你可以自学C并使用它来写程序,从而节省一大堆的时间,不过使用这种方法有两个弊端:
你将错过那些面向对象的知识,因为它可能在你的游戏中使得数据建模更有效率的东西。
最大的商业游戏,包括第一人称射击游戏很多并没有使用C++。但是,这些程序的作者即使使用老的C的格式,他们通常坚持使用面向对象编程技术。如果你只想学C,至少要自学OO(面向对象)编程技术。OO是仿真(游戏)的完美方法,如果你不学习OO,你将不得不“辛苦”的工作。
4、汇编语言
显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。
确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单
-
这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。
总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。
特别注意:语言的名字叫“汇编”。把汇编语言翻译成真实的机器码的工具叫“汇编程序”。把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。
优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。
缺点:难学、语法晦涩、坚持效率,造成大量额外代码
-
不适于心脏虚弱者。
移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。
使用汇编编写的游戏:我不知道有什么商业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。
资料:如果你正在找一门汇编语言的文档,你主要要找芯片的文档。网络上如Intel、AMD、Motorola等有一些关于它们的处理器的资料。对于书籍而言,《Assembly
Language:
Step-By-Step》是很值得学习的。
5、Pascal语言
Pascal语言是由Nicolas
Wirth在七十年代早期设计的,因为他对于FORTRAN和COBOL没有强制训练学生的结构化编程感到很失望,“空心粉式代码”变成了规范,而当时的语言又不反对它。Pascal被设计来强行使用结构化编程。最初的Pascal被严格设计成教学之用,最终,大量的拥护者促使它闯入了商业编程中。当Borland发布IBM
PC上的
Turbo
Pascal时,Pascal辉煌一时。集成的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗,Pascal编程了为MS-DOS编写小程序的首选语言。
然而时日不久,C编译器变得更快,并具有优秀的内置编辑器和调试器。Pascal在1990年Windows开始流行时走到了尽头,Borland放弃了Pascal而把目光转向了为Windows
编写程序的C++。Turbo
Pascal很快被人遗忘。
最后,在1996年,Borland发布了它的“Visual
Basic杀手”-
Delphi。它是一种快速的带华丽用户界面的
Pascal编译器。由于不懈努力,它很快赢得了一大群爱好者。
基本上,Pascal比C简单。虽然语法类似,它缺乏很多C有的简洁操作符。这既是好事又是坏事。虽然很难写出难以理解的“聪明”代码,它同时也使得一些低级操作,如位操作变得困难起来。
优点:易学、平台相关的运行(Delphi)非常好。
缺点:“世界潮流”面向对象的Pascal继承者(Mola、Oberon)尚未成功。语言标准不被编译器开发者认同。专利权。
移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相关的功能。
使用Pascal编写的游戏:几个。DirectX的Delphi组件使得游戏场所变大了。
资料:查找跟Delphi有关的资料,请访问:Inprise
Delphi
page。
6、Visual
Basic
哈,BASIC。回到八十年代的石器时代,它是程序初学者的第一个语言。最初的BASIC形式,虽然易于学习,却是可怕的无组织化,它义无反顾的使用了GOTO充斥的“空心粉式代码”。当回忆起BASIC的行号和GOSUB命令,没有几个人能止住眼角的泪水。
快速前进到九十年代早期,虽然不是苹果公司所希望的巨人,HyperCard仍然是一个在Windows下无法比拟的吸引人的小型编程环境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂贵。为了与HyperCard一决高下,微软取得了一个小巧的名为Thunder编程环境的许可权,并把它作为Visual
Basci
1.0发布,其用户界面在当时非常具有新意。这门语言虽然还叫做Basic(不再是全部大写),但更加结构化了,行号也被去除。实际上,这门语言与那些内置于TRS-80、Apple
II及Atari里的旧的ROM
BASIC相比,更像是带Basic风格动词的Pascal。
经过六个版本,Visual
Basic变得非常漂亮。用户界面发生了许多变化,但依然保留着“把代码关联到用户界面”的主旨。这使得它在与即时编译结合时变成了一个快速原型的优异环境。
优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。虽然有第三方的DirectX插件,DirectX
7已准备提供Visual
Basic的支持。
缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO功能,但却不是完全的面向对象。专利权。
移植性:非常差。因为Visual
Basic是微软的产品,你自然就被局限在他们实现它的平台上。也就是说,你能得到的选择是:Windows,Windows或Widnows。当然,有一些工具能将VB程序转变成Java。
使用Visual
Basic编写的游戏:一些。有很多使用VB编写的共享游戏,还有一些是商业性的。
资料:微软的VB页面有一些信息。
7、Java
Java是由Sun最初设计用于嵌入程序的可移植性“小C++”。在网页上运行小程序的想法着实吸引了不少人的目光,于是,这门语言迅速崛起。事实证明,Java不仅仅适于在网页上内嵌动画
-
它是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。
虽然不是C++的正式续篇,Java从C++
中借用了大量的语法。它丢弃了很多C++的复杂功能,从而形成一门紧凑而易学的语言。不像C++,Java强制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写“空心粉式代码”一样困难。
优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。
缺点:使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。有很多技术(例如“即时”编译器)很大的提高了Java的速度,不过速度永远比不过机器码方案。早期的功能,如AWT没经过慎重考虑,虽然被正式废除,但为了保持向后兼容不得不保留。越高级的技术,造成处理低级的机器功能越困难,Sun为这门语言增加新的“受祝福”功能的速度实在太慢。
移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能在某些平台上不稳定。
使用Java编写的游戏:网页上有大量小的Applet,但仅有一些是商业性的。有几个商业游戏使用Java作为内部脚本语言。
资料:Sun的官方Java页面有一些好的信息。IBM也有一个非常好的Java页面。JavaLobby是一个关于Java新闻的最好去处。
8、创作工具
上面所提及的编程语言涵盖了大多数的商业游戏。但是也有一个例外,这个大游戏由于它的缺席而变得突出。
“神秘岛”。没错,卖得最好的商业游戏不是使用以上任何一门语言编的,虽然有人说“神秘岛”99%是使用
3D建模工具制作的,其根本的编程逻辑是在HyperCard里完成的。
多数创作工具有点像Visual
Basic,只是它们工作在更高的层次上。大多数工具使用一些拖拉式的流程图来模拟流程控制。很多内置解释的程序语言,但是这些语言都无法像上面所说的单独的语言那样健壮。
优点:快速原型
-
如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任何代码的简单游戏。使用插件程序,如Shockware及IconAuthor播放器,你可以在网页上发布很多创作工具生成的程序。
缺点:专利权,至于将增加什么功能,你将受到工具制造者的支配。你必须考虑这些工具是否能满足你游戏的需要,因为有很多事情是那些创作工具无法完成的。某些工具会产生臃肿得可怕的程序。
移植性:因为创作工具是具有专利权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上创作和运行。
使用创作工具编写的游戏:“神秘岛”和其他一些同类型的探险游戏。所有的Shockwave游戏都在网络上。
资料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、易语言
★全中文支持,无需跨越英语门槛。★全可视化编程,支持所见即所得程序界面设计和程序流程编码。★中文语句快速录入。提供多种内嵌专用输入法,彻底解决中文语句输入速度慢的问题。★代码即文档。自动规范强制代码格式转换,任何人编写的任何程序源代码格式均统一。★参数引导技术,方便程序语句参数录入。★无定义类关键字。所有程序定义部分均采用表格填表方式,用户无需记忆此类关键字及其使用格式。★命令格式统一。所有程序语句调用格式完全一致。★语法格式自动检查。自动检查并提示所输入语句的语法格式是否正确,且可自动添加各类名称。★全程提示与帮助。鼠标停留立即显示相关项目提示。编程时提示语法格式,调试时提示变量当前内容,随时按下F1键可得到与当前主题相关详细帮助等。★名称自动管理。用户修改任一名称定义,其它所有包含该名称的程序代码均自动修正。★集成化开发环境。集界面设计、代码编写、调试分析、编译打包等于一体。★学习资源丰富。详细的帮助文件、数十兆的知识库、数万用户的网上论坛、教材已出版发行……
10、结论
你可能希望得到一个关于“我该使用哪种语言”这个问题的更标准的结论。非常不幸,没有一个对所有应用程序都最佳的解决方案。C适于快而小的程序,但不支持面向对象的编程。C++完全支持面向对象,但是非常复杂。Visual
Basic与Delphi易学,但不可移植且有专利权。Java有很多简洁的功能,但是慢。创作工具可以以最快的速度产生你的程序,但是仅对某一些类型的程序起作用。最好的方法是决定你要写什么样的游戏,并选择对你的游戏支持最好的语言。“试用三十天”的做法成为工业标准是件好事情。

D. 编程,程序,数据库,都是什么意思最好能给个比喻.还有一些网站功能,请高手补充.多谢,回答好的加分

编程: 可以理解为一种技能,比方 走路-> 人需要学习 -> 学会走路,你就拥有了一个走路的技能。
程序: 是编程的整体体现,比方 你会了走路 说话 肢体动作 这样一系列的功能组成了一个完整的程序。
数据库: 可以理解为 人的大脑 存储数据用的,需迅辩磨要对数据进行 增删改查而已。
网站功能: 就是上边所说的一系列的动作,来完成一些具体的操作,比方,登录,注册,支付等,一个网站就是通过多亩斗个灶饥功能组合起来的。
希望可以帮到你

E. 有什么工具可以伪装编程语言

解决方法:
一.加花指令。可以通过OD之类的软件修改你的软件的入口地址,加上花指令就可以了。下面是搜索到的常用花指令,直接复制过来的可能有重复。你可以试试,如果不够或不准确的话,你也可以自己搜索以下,当然你会汇编的话也可以写。
1.伪装vc++5.0代码:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 111111 -\___
PUSH 111111 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,Dword PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
nop
jmp 原入口地址

************************************************************************
2.胡乱跳转代码:
push ebp
mov ebp,esp
inc ecx
push edx
ADD ESP,-6C
nop
pop edx
dec ecx
pop ebp
ADD ESP,6C
inc ecx
loop somewhere /跳转到上面那段代码地址去!

somewhere:
nop /"胡乱"跳转的开始...
jmp 下一个jmp的地址 /在附近随意跳
jmp ... /...
jmp 原入口地址 /跳到原始oep

************************************************************************
3.伪装c++代码:
push eax
mov ebp,esp
push -1
push 111111
push 111111
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
nop
nop
jmp 原入口地址

************************************************************************
4.伪装Microsoft Visual C++ 6.0代码:

PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
SUB ESP,1
PUSH EBX
PUSH ESI
PUSH EDI
POP EAX
POP EAX
nop
POP EAX
nop
ADD ESP,1
POP EAX
MOV DWORD PTR FS:[0],EAX
POP EAX
POP EAX
nop
POP EAX
nop
POP EAX
MOV EBP,EAX
JMP 原入口地址

************************************************************************
5.伪装防杀精灵一号防杀代码:
push ebp
mov ebp,esp
push -1
push 666666
push 888888
mov eax,dword ptr fs:[0]
nop
mov dword ptr fs:[0],esp
nop
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 原入口地址

************************************************************************
6.伪装防杀精灵二号防杀代码:
push ebp
mov ebp,esp
push -1
push 0
push 0
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
sub esp,68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp,68
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 原入口地址

************************************************************************
7.伪装木马彩衣(无限复活袍)代码:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!
jo 原入口地址
jno 原入口地址
call 下一地址

************************************************************************
8.伪装木马彩衣(虾米披风)代码:
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loop somewhere /跳转到下面那段代码地址去!

someshere:
nop /"胡乱"跳转的开始...
jmp 下一个jmp的地址 /在附近随意跳
jmp ... /...
jmp 原入口的地址 /跳到原始oep

************************************************************************
9.伪装花花添加器(神话)代码:-----------根据C++改
nop
nop
nop
mov ebp,esp
push -1
push 111111
push 222222
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
mov eax,原入口地址
push eax
retn

************************************************************************
10.伪装花花添加器(无极)代码:
nop
mov ebp, esp
push -1
push 0A2C2A
push 0D9038
mov eax, fs:[0]
push eax
mov fs:[0], esp
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口地址
jmp eax

************************************************************************
11.伪装花花添加器(金刚)代码:--------根据VC++5.0改
nop
nop
mov ebp, esp
push -1
push 415448
push 4021A8
mov eax, fs:[0]
push eax
mov fs:[0], esp
add esp, -6C
push ebx
push esi
push edi
add [eax], al
mov eax,原入口地址
jmp eax

************************************************************************
12.伪装花花添加器(杀破浪)代码:
nop
mov ebp, esp
push -1
push 0
push 0
mov eax, fs:[0]
push eax
mov fs:[0], esp
sub esp, 68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp, 68
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口地址
jmp eax

************************************************************************
12.伪装花花添加器(痴情大圣)代码:
nop
..........省略N行nop
nop
push ebp
mov ebp, esp
add esp, -0C
add esp, 0C
mov eax, 原入口地址
push eax
retn

************************************************************************
13.伪装花花添加器(如果*爱)代码:
nop
........省略N行nop
nop
push ebp
mov ebp, esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
mov eax, 原入口地址
jmp eax

************************************************************************
14.伪装PEtite 2.2 -> Ian Luck代码:
mov eax,0040E000
push 004153F3
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
pushfw
pushad
push eax
xor ebx,ebx
pop eax
popad
popfw
pop dword ptr fs:[0]
pop eax
jmp 原入口地址 '执行到程序的原有OEP

************************************************************************
15.无效PE文件代码:
push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
MOV DWORD PTR FS:[0],EAX \
POP EAX |
POP EAX \
MOV DWORD PTR FS:[0],EAX |(注意了。。花指令)
POP EAX /
POP EAX |
MOV DWORD PTR FS:[0],EAX /
loop 原入口地址

************************************************************************
16.伪装防杀精灵终极防杀代码:
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
jmp 原入口地址

************************************************************************
17.伪装木马彩衣(金色鱼锦衣)花代码
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
mov eax,原入口地址
push eax
retn

************************************************************************
18.
在mov ebp,eax
后面加上
PUSH EAX
POP EAX

************************************************************************
19.伪装UPX花指令代码:

pushad
mov esi,m.0044D000
lea edi,dword ptr ds:[esi+FFFB4000]
push edi
or ebp,FFFFFFFF
jmp short m.00477F2A

************************************************************************
20.
push ebp
mov ebp,esp
inc ecx
push edx
pop edx
dec ecx
pop ebp
inc ecx
jmp 原入口

21、
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loop A1地址
nop
nop

A1:push ebp
mov ebp,esp
jo 原入口
jno 原入口

************************************************************************
【深层】伪装 WCRT Library (Visual C++) DLL Method 1 -> Jibz
黑吧代码 + 汇编代码:
使用黑吧粘贴以下代码:

55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59

粘贴完毕后,再添加2行汇编语句:

jmp 原入口地址 '执行到程序的原有OEP

retn 0C
************************************************************************

发布几个不常见的花指令

B1 01 mov cl,1
2C 90 sub al,90
95 xchg eax,ebp
4D dec ebp
65:42 inc edx
40 inc eax
20C4 and ah,al
8350 06 6E adc dword ptr ds:[eax+6],6E
226A E4 and ch,byte ptr ds:[edx-1C]
E8 B15FBC5B call 入口点

55 push ebp
8BEC mov ebp,esp
51 push ecx
53 push ebx
8BD8 mov ebx,eax
8BC3 mov eax,ebx
04 9F add al,9F
2C 1A sub al,1A
73 03 jnb 入口点

JMP SHORT test.00414FB5 (EB 01)
NOP
JMP SHORT test.00414FB8 (EB 01)
NOP
JMP SHORT test.00414FBB (EB 01)
NOP
JMP test. (EB 01)

90=c4

PUSH EBP
MOVE EBP,ESP
inc ecx
push eax
pop eax
push edx
pop edx
dec ecx
sub eax,-2
ADD ESP,68
DEC eax
DEC eax
SUB ESP,68
JPE 入口
JPO 入口
2008-6-13 11:30 dazy
花指令合集(0608)

【深层】伪装 PEtite 2.2 -> Ian Luck 汇编代码:
============================
伪装代码部分:
============================

mov eax,0040E000
push 004153F3
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
pushfw
pushad
push eax
xor ebx,ebx
pop eax
popad
popfw
pop dword ptr fs:[0]
pop eax
jmp XXXXXXXX '执行到程序的原有OEP

============================

【深层】伪装 WCRT Library (Visual C++) DLL Method 1 -> Jibz 二进制代码 + 汇编代码:
============================
伪装代码部分:
============================

使用二进制粘贴以下代码:

55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59

粘贴完毕后,再添加2行汇编语句:

jmp XXXXXXXX '执行到程序的原有OEP
retn 0C

1。伪装 vc

VC++程序的入口代码:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!
jmp 跳转到程序原来的入口点

******************************************************************************************

2。跳转

somewhere:
nop /"胡乱"跳转的开始...
jmp 下一个jmp的地址 /在附近随意跳
jmp ... /...
jmp 原入口的地址 /跳到原始oep

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
新入口: push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
loop somewhere /跳转到上面那段代码地址去!

3. 伪装 C
融合
把A的代码换成B的
push ebp
mov ebp,esp
push -1
push 111111
push 222222
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 老入口

4. c ++
push ebp
mov ebp,esp
push -1
push 111111
push 222222
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax

5.Microsoft Visual C++ 6.0
PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
SUB ESP,68
PUSH EBX
PUSH ESI
PUSH EDI
POP EAX
POP EAX
POP EAX
ADD ESP,68
POP EAX
MOV DWORD PTR FS:[0],EAX
POP EAX
POP EAX
POP EAX
POP EAX
MOV EBP,EAX
JMP 原入口

6.
在mov ebp,eax
后面加上
PUSH EAX
POP EAX

7:
防杀精灵一号防杀代码:
push ebp
mov ebp,esp
push -1
push 666666
push 888888
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 入口

8:
防杀精灵二号防杀代码:
push ebp
mov ebp,esp
push -1
push 0
push 0
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
sub esp,68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp,68
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 入口

9.
防杀精灵终极防杀代码
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
jmp入口

10:
木马彩衣(金色鱼锦衣)花代码
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
mov eax,原入口
push eax
retn

11:
木马彩衣(虾米披风)花代码
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loopd /跳转到下面那段代码地址去!

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
nop /"胡乱"跳转的开始...
jmp 下一个jmp的地址 /在附近随意跳
jmp ... /...
jmp 原入口的地址 /跳到原始oep

12.
VC++5.0代码(木马彩衣无限复活袍):
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!
jo 00401000 /原入口
jno 00401000 /原入口
db 0e8h /花代码

xxxxxx: nop \
/|\ POP EAX |看了,其实这两部分就是花指令
| POP EAX |
| POP EAX /
| JMP yyyyyy (跳回旧入口点:00100016DB )
|
|
| push ebp <-新入口点:
| mov ebp,esp
| inc ecx
| push edx
| nop
| pop edx
| dec ecx
| pop ebp
| inc ecx
| MOV DWORD PTR FS:[0],EAX \
| POP EAX |
| POP EAX \
| MOV DWORD PTR FS:[0],EAX |(注意了。。花指令)
| POP EAX /
| POP EAX |
| MOV DWORD PTR FS:[0],EAX /
| loop xxxxxx (这里我向上跳~地址也是自己选的~~)
|_________________++++++(转到地址:100036c3 往回跳)

--------------------------------------------------------------
代码如下: 神话
nop
nop
nop
mov ebp,esp
push -1
push 111111
push 222222
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
mov eax,原入口
push eax
retn

代码如下: 无极
nop
mov ebp, esp
push -1
push 0A2C2A
push 0D9038
mov eax, fs:[0]
push eax
mov fs:[0], esp
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口
jmp eax

代码如下: 金刚
nop
nop
mov ebp, esp
push -1
push 415448
push 4021A8
mov eax, fs:[0]
push eax
mov fs:[0], esp
add esp, -6C
push ebx
push esi
push edi
add [eax], al
mov eax,原入口
jmp eax

代码如下: 杀破浪
nop
mov ebp, esp
push -1
push 0
push 0
mov eax, fs:[0]
push eax
mov fs:[0], esp
sub esp, 68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp, 68
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口
jmp eax

代码如下: 痴情大圣
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebp
mov ebp, esp
add esp, -0C
add esp, 0C
mov eax, 原入口
push eax
retn

代码如下: 如果*爱
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebp
mov ebp, esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
mov eax, 原入口
jmp eax

--------------------------------------------------------
灰鸽子万能文件捆绑器 VIP2005 -> 葛军 *

push ebp
mov ebp,esp
add esp,-124
push ebx
push esi
push edi
xor eax,eax
mov dword ptr ss:[ebp-124],eax
jmp 入口

----------------------------------------------------------
PUSH EBP
MOV EBP,ESP
MOV EAX,0
PUSH EAX
CALL 下个指令 ↓
POP EAX
SUB EAX,0
MOV ECX,0
MOV EDX,0
MOV ESI,0
MOV EDI,0
MOV EBP,0
ADD EBP,EAX
POP EAX
POP EAX
POP EAX
POP EAX
POP EBP
PUSH 入口点
RETN
----------------------------------------------------------------
//Borland Delphi 6.0 - 7.0

PUSH EBP
MOV EBP,ESP
MOV ECX,6
PUSH 0 下面那个跳到这里
PUSH 0
DEC ECX
JNZ 往回跳
PUSH EBX
PUSH ESI
PUSH EDI
POP EDI
POP ESI
POP EBX
JMP 入口点
-----------------------------------------------------------------
push ebp
mov ebp,esp
inc edx
nop
pop edx
dec ecx
pop ebp
inc ecx
jmp 入口点
-----------------------------------------------------------------
push ebp
mov ebp,esp
push ebx
mov ebx,dword ptr ss:[ebp+8]
push esi
mov esi,dword ptr ss:[ebp+C]
push edi
mov edi,dword ptr ss:[ebp+10]
test esi,esi
jmp 入口
-----------------------------------------------------------------
0046D4BA pop eax
0046D4BB sub eax,7D
0046D4C0 push eax
0046D4C1 C3 retn
0046D4C2 call 0046D4BA

-------------------------------------------------------------------
伪装VC7。0花

最近抓的伪装VC7。0的花,很短
//---------------------------------
push 70
push 123456(数字随便)
call A(A为地址)
xor ebx,ebx

A地址:retn
2008-6-13 11:30 dazy
1.POP 0
POP 0

2.PUSH ebp
pop ebp

3.nop ----一般插在中间

4.jmp 一下jmp的地址

jmp ...

5.add esp,1 ----数字可以改变
sub esp,1

6. add esp,1
add esp,-1

7.sub esp,1
sub esp,-1

8.push esi
push edi

9.inc ecx
dec ecx

10 sub eax,-2
dec eax
dec eax

11.(该免杀花指令经典,压缩可运行,免卡巴)
push ebp
mov ebp,esp
pop esp
jmp 原入口点地址-

jmp XXXXXX等价于:

PUSH XXXXXX
RETN

12. 免杀卡巴的花指令:

push ebx
push ebx
push ebx
pop ebx
pop ebx
pop ebx
jmp 跳到下一个地址
add esp,1
add esp,-1
push 入口点地址
retn

*************
12.(同上)
push ebp

push esp
pop ebp

pop esp
jmp 原入口点地址

13.最新的一段万能免杀花指令:
push ebp
push esp
pop ebp
add esp,-0C
add esp,0C
push eax
jmp入口

14.免杀花指令

push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
mov eax,入口地址
jmp eax
nop

15.
jmp 改成:Jg(大于转移),JL(小于转移)
或改成:jb(小于转移),jnb(大于或等于转移)

16.写过卡巴花指令的跳不要直接用jmp来跳,不然,要被直接杀

jmp ---直接被杀
改成
jb
jnb

或改成:
push 入口地址
retn

或改成:

mov eax,入口地址
jmp eax

17.一段免杀卡巴的花指令:
push ebx
push ebx
pop ebx
pop ebx
add esp,1
add esp,-1
push 入口地址
retn

二。可以通过加壳工具,让别人识别不出来你用什么编写的。加壳工具分压缩壳和加密壳。我就不再列出了。

注意:因为有的人做木马或病毒通过加花或加壳来实现免杀。所以有的是会被杀毒软件认为是木马或病毒。

F. 请用有趣的比喻解释什么叫软件什么叫编程(说的很好的,给高分)

打个比方,你买个电脑,不装系统,什么也干不了
操作系统就是软件的一种,其他各种软件要在操作系统上运行,如WINXP。
软件是怎么来的?软件工程师通过编程做出来的,编程也是要用软件的。比如VC。

你看的电子元件是不是叫可编程逻辑器件,这个元件里面可以储存通过编程得到的程序。

U盘是存储软件和文件的,内存是暂时存储的,用来和CPU传输数据用的。

打的够多的,虽然不专业,但是看着给点分吧。不明白就网络看看就行

最后补充一个 最早的编程是不用软件的。
是用机器语言,就是010111000这么一个一个敲的。鸡蛋出来了 哦也

G. C语言入门什么是编程语言

学习编程语言之前,首先要搞清楚“编程语言”这个概念。

很小的时候,父母就教我们开口说话,也教我们如何理解别人讲话的意思。经过长时间的熏陶和自我学习,我们竟然在不知不觉中学会了说话,同时也能听弯和懂其他小朋友说话的意思了,我们开始向父母要零花钱买零食和玩具、被欺负了向父母倾诉……

我们说的是汉语,是“中国语言”,只要把我们的需求告诉父母,父母就会满足,我们用“中国语言”来控制父母,让父母做我们喜欢的事情。

“中国语言”有固定的格式,每个汉字代表的意思不同,我们必须正确的表达,父母才能理解我们的意思。例如让父母给我们10元零花钱,我们会说“妈妈给我10块钱吧,我要买小汽车”。如果我们说“10元给我汽车小零花钱妈妈”,或者“妈妈给我10亿人民币,我要买F-22”,妈妈就会觉得奇怪,听不懂我们的意思,或者理解错误,责备我们。

我们通过有固定格式和固定词汇的“语言”来控制他人,让他人为我们做事情。语言有很多种,包括汉语、英语、法语、韩语等,虽然他们的词汇和格式都不一样,但是可以达到同样的目的,我们可以选择任意一种语言去控制他人。

同样,我们也可以通过”语言“来控制计算机,让计算机为我们做事情,这样的语言就叫做编程语言(Programming Language)。

编程语言也有固定的格式和词汇,我们必须经过学习才会使用,才能控制计算机。

编程语言有很多种,常用的有C语言、C++、Java、C#、PHP、JavaScript等,每种语言都有自己擅长的方面,例如:

C语言和C++主要用于PC软件开发、底层开发、单片机和嵌入式系统;

Java和C#不但可以用来开发软件,还可以用来开发网站后台程序;

PHP主要用来开发网站后台程序;

JavaScript 主要负责网站的前端工作(现在也有公司使用 Node.js 开发网站后台)。

可以将不同的编程语言比喻成各国语言,为了表达同一个意思,可能使用不同的语句。例如,表达“世界你好”的意思:

汉语:世界你好;

英语:Hello World

法语:Bonjour tout le monde

在编程语言中,同样的操作也可能使用不同的语句。例如,在屏幕上显示“XX电子社区”:

C语言:puts("XX电子社区");

PHP:echo "XX电子社区";

Java:System.out.println("XX电子社区");

编程语言类似于人类语言,由直观的词汇组成,我们很容易就能理解它的.意思,例如在C语言中,我们使用puts这个词让计算机在屏幕上显示出文字;puts 是 output string(输出字符串)的缩写。

使用 puts 在屏幕上显示“XX电子社区”:

puts("XX电子社区");我们把要显示的内容放在("和")之间,并且在最后要有;。你必须要这样写,这是固定的格式。

激搭总结:编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守,否则就会出错,达不到我们的目的。

C语言(C Language)是编程语言的一种,学习C语言,主要是学习它的格式和词汇。下面是一个C语言的完整例子,它会让计算机在屏幕上显示”XX电子社区“。

这个例子主要演示C语言的一些固有格式和词汇,看不懂的读者不必深究,也不必问为什么是这样,后续我们会逐步给大家讲解。

#include

int main(){

puts("XX电子社区");

return 0;

}

这些具有特定含义的词汇、语句,按照特定的格式组织在一起,就构成了源代码(Source Code),也称源码或代码(Code)。

那么,C语言肯定规定了源代码中每个词汇、语句的含义,也规定了它们该如何组织在一起,这就是语法(Syntax)。它与我们学习英语时所说的“语法”类似,都规定了如何将特定的词汇和句子组织明闹拿成能听懂的语言。

编写源代码的过程就叫做编程(Program)。从事编程工作的人叫程序员(Programmer)。程序员也很幽默,喜欢自嘲,经常说自己的工作辛苦,地位低,像农民一样,所以称自己是”码农“,就是写代码的农民。也有人自嘲称是”程序猿“。

H. 程序设计 的比喻

程序设计

就像厨师做菜...

从柴米油盐 一直到上层的工具 最斗羡档上层的就是厨师

厨师面对的是一样样工具(可理解为操作系统应用程序接口,也可以理解为别人制作的框架...),这些工具是别人根空乱据更底层的接口 制作出来的...
更底层的是什么..是钢铁--->锅碗瓢盆
是种子--->粮食,肥料

.......

而编程 就是用别人做好的这些工具,,锅碗瓢盆,柴米油盐来操作 制定出一定的操作次序...

锅碗瓢盆是工具,柴米油盐是数据...

程序员就是用工具 将数据经过一定处理 最后派腔完成一个作品

I. 编程 到底是什么详细解释

我认为楼上的食谱的比喻不是很恰当。
因为食谱是一种工作流,描述的是先干什么后干什么以亩芹袭及所用的迅兄资源和时间,而程序除了可以被看成一种工作流之外,还可以被看成一种生成工作流的逻辑描述,也就是说,除了要安排好食谱中的步骤,还要知道食材和步骤的逻辑关系,比如是先炒后炖还是先炖后炒,是先放油盐酱醋还是后放油盐酱醋,什么东西和什么东西不能放一起等等。这些是通过编程和程序中的逻辑判断来实现的,这种逻辑判断在食谱中是没有首源的(例如,食谱中是不会出现"如果炒糊了就放点糖"这样的描述的)。因此,食谱只是单纯的流程描述,编程和程序是比食谱更高级和复杂的概念。

其实,编程用大白话来说,就是如何控制计算机利用各种硬件资源来处理数据和信息。因此,编程分为几个层级。最底层是直接与硬件打交道的,用来控制硬件的执行,一般是汇编编程;最上面的是软件编程,直接处理数据和信息,编写的程序直接面向程序的使用者;在他们之间的是操作系统级编程,用来建立连接底层和上层的桥梁。每一层就不展开说了,否则都够写几本书了。
大多数程序员都属于软件编程这个层级的,其他的程序员一般都必须非常了解他们使用的硬件,因为他们的程序就是要操作这些硬件的。
说完了编程的分类,再来说说编程到底干什么。我也来比喻一下,我把编程比喻成教育,计算机就是小孩,综合起来就是教计算机做什么以及怎么做,也就是教育小孩做事情,而编程写出来的程序,就是一种行为规范。
比如,我要教小孩过马路,那么我告诉他一个过马路的行为规范:"先向左看,如果没车过来就走到路中央,如果有车就等车过去;到了路中央向右看,如果没车就过去,如果有车就等一等。"
我把这个过马路的"行为规范"(程序)告诉我的"小孩"(计算机),他就能严格照着去执行。
这个比喻不恰当的地方,就是我的"小孩"的学习能力实在有限,他只会照着我写好的"行为规范"去做,我没写的他就不知道怎么做了。但是,将来的"小孩"肯定会增强自己的学习能力,通过"行为规范"来产生新的"行为规范",并且新的"教育方法"(编程方法)也在不断的被研究着。

J. 如果把编程比喻成盖房子。

我觉得比喻相当不恰当。如果确实这么比喻,那我愿意住面向过程的房子。
首先,房屋的整体性很强,你把它分割开来考虑和计算本身就很困难,如果是胡乱分割,那还不如不分割。
其次,面向过程和工具的关系也搞不清楚,我不明白为什么面向过程就是统一工具。

实际斗州上,面向对象和面空渣蔽向过程各自有各自的优势。很多事情自有适合的方式,不恰当的比喻会使得问题越来越复杂。

有些典型的问题是可以多个方面去考虑的,比如象棋:
A:如果从面向过程去说,那应当是,轮流移动上来考虑,即你做了一个动作以后,对方会怎样。
B:梁猜如果从面向对象上来说,每一个棋盘上的子都是一个对象,他们都有自己的移动方式,在每一个特定的棋局中,有存在很多对它造成威胁的势力和它可以威胁到的棋子。……

使用面向对象的方式,会使得很多很复杂的问题有一个比较简单的解决方法。但是实际上,问题的复杂程度不会因为你的思考方式的改变而改变,复杂程度本身是不变的。因此,面向对象并不能改变软件本身的复杂性。

阅读全文

与如何把编程语言比喻成某种工具相关的资料

热点内容
为什么文件压缩后传输速度会提高 浏览:329
gta4文件在哪里 浏览:719
电影院x临境音厅什么意思 浏览:330
经典意大利罗莎卡拉乔洛电影 浏览:194
一个大学男教授电影叫什么诱惑 浏览:246
linux内核无法生成模块 浏览:40
电脑可以看电影的网址 浏览:347
阿里云盘 冰雪奇缘 国语 浏览:882
cmake扩展名文件 浏览:684
常用排序算法总结java 浏览:523
新手怎么选网站空间 浏览:408
不正规电影在哪里看 浏览:418
宏程序铣深度怎么编程 浏览:60
大数据衍生服务 浏览:75
六只脚导出的gpx文件存在哪里 浏览:867
中国电影男演员名单图片 浏览:553
2020国产爱情电影有哪些 浏览:28
台湾男同电影 浏览:976
武动乾坤同人小说 浏览:979
主角建立基地贩卖军火 浏览:668

友情链接