导航:首页 > 源码编译 > 反编译历史

反编译历史

发布时间:2022-08-30 22:30:40

⑴ 如何替换android应用图标

(1)打开apk编辑器

⑵ 用apktool手机版,反编译成功了,再编译却找不到生成的文件,求解

可能你的修改有错误吧,所以就会产生不了文件

⑶ autoit v3 编写的软件反编译,难度颇大,希望大大帮忙

虽然我以前是这么回答的,但实话说,不借助autoit自带的反编译工具,也是有办法反编译的。
但网络知道平台上估计没这种高人,或者说,有这种能力的高人一般没时间泡在网络知道上。
所以,在这里提问是枉然的。建议去AutoIt中文论坛或官方论坛碰碰运气吧,毕竟更专业一些。
不过话又说回来,就算去那里也未必有人肯花时间帮你反编译的(真的很费时间和精力)。一来防止引发版权问题,二来人家主要是来技术交流的,不是纯粹为分数而帮人干活的。所以,这个问题要得到解决,真的不容易。只能祝你好运了 ;-)

⑷ 杀毒软件的原理是什么

工作原理是部分杀毒软件是在内存里划分一部分空间,将计算机中流过内存的数据与杀毒软件自身所带的病毒库(包含病毒定义)的特征码相比较,以判断是否为病毒;另一部分杀毒软件在所划分到的内存空间里,虚拟执行系统或用户提交的程序,根据其行为或结果作出判断。 杀毒软件会生成现有主机操作系统的全新虚拟镜像,该镜像具有真实操作系统完全一致的功能。桌面虚拟化技术具有独立分挡操作系统压力,通过该技术实现运行过程中垃圾文件为零的目标,同时生成的虚拟环境与主机操作系统完全隔离,保护主机不被病毒感染,减少了系统被破坏的概率。

一个杀毒软件的构造的复杂程度要远远高于木马或病毒,所以其原理也比较复杂。而且鉴于现在木马病毒越来越向系统底层发展,杀毒软件的编译技术也在不断向系统底层靠近。例如现在的“主动防御”技术,就是应用RING0层的编译技巧。这里我简单为大家介绍一下基本构成。 一个杀毒软件一般由扫描器、病毒库与虚拟机组成,并由主程序将他们结为一体,如图1。 扫描器是杀毒软件的核心,用于发现病毒,一个杀毒软件的杀毒效果好坏就直接取决于它的扫描器编译技术与算法是否先进,而且杀毒软件不同的功能往往对应着不同的扫描器,也就是说,大多数杀毒软件都是由多个扫描器组成的。而病毒库存储的特征码形式则取决于扫描器采用哪种扫描技术。它里面存储着很多病毒所具有的独一无二的特征字符,我们称之为“特征码”。特征码总的分来只有两个,文件特征码与内存特征码。文件特征码存在于一些未执行的文件里,例如EXE文件、RMVB文件、jpg文件甚至是txt文件中都有可能存在文件特征码,也都有可能被查杀。而内存特征码仅仅存在于内存中已运行的应用程序。而虚拟机则是最近引进的概念,它可以使病毒在一个由杀毒软件构建的虚拟环境中执行,与现实的CPU、硬盘等完全隔离,从而可以更加深入的检测文件的安全性。 简单的说,杀毒软件的原理就是匹配特征码。当扫描得到一个文件时,杀毒软件会检测这个文件里是否包含病毒库里所包含的特征码,如果有,则报毒病查杀,如果没有,纵然这个文件确实是一个病毒,它也会把它当作正常文件来看待。 我觉得腾讯电脑管家就是最好的杀毒软件了二、基于文件扫描的杀毒技术 基于文件的杀毒技术可以分为“第一代扫描技术”、“第二代扫描技术”与“算法扫描”这三种方法,对于免杀爱好者来说,要对每一种方法烂熟于心,才能成为高手!但做为一个初学者来说了解一下即可。这里我们就简单介绍一下其中两种种方法,详细的技术原理如果各位得这有兴趣的话可以自己研究。

⑸ 如何wf文件不被反编译软件破解

The answer to the question in the title of this article is: "no way". At least no way to me. By proper tools, I can decompile any SWF.
其实,对于如何保护swf不被破解,答案是并不存在的。至少我无法做到!我可以用一些相应的工具破解任何SWF文件
So, do not incorporate important information in the SWF. Do not include your personal account or password in the SWF.
所以,不要在swf文件中放置任何重要的信息,不要把你的个人账户或密码放在swf中。
I will briefly discuss the history of "protection" technique and how they failed. Then I would discuss how at best we can do. In Chinese old says: "A way able to protect from gentleman but not from professional theft".
我将会简单地论述“保护(不被破解)”技术以及它们是如何失效的。然后我会介绍如何将“尽最大努力”来保护swf文件。中国有一句老话:“防得住君子,防不过小人”??
OPEN-FILE-FORMAT
开放文件格式
Before any discussion, we must know that, SWF is open format. Open-format means SWF files are not exclusively proced by Flash. Other companies can create SWF that can be played on SWF player. Open-format means what informations get stored in what position are known for public. The meaning of each byte is known for public. So, if I have time to check the SWF byte by byte, I know everything.
在开始探讨这个问题之前,我们要知道,swf文件是开放格式的。这意味着swf文件并不是Flash软件所特定生成的,其他的公司(软件)同样可以创建swf文件并且能够在任何swf播放器上播放(aw附:比如SwishMax,Swift3d等等)开放格式意味着(swf文件的)什么地方存放什么内容是公布于众的。(swf文件的)每一个字节(8个bit,比如01001110)也是公布于众的。所以,如果我有时间来逐个字节地分析一个swf文件,我将会知道一切。
Of course, I won't have the time to check an SWF of 2 mb in size byte by byte. So, there are softwares to help me achieve the jobs. If that software meets trouble, OK, I will take over the job temporarily and check the bytes where troubles occurr. Fix it, and then continue. Nothing can hide. The limitation is my time and my patience.
If the reward of decompiling an SWF is millions of dollars, I surely would like to take years to read it byte by byte.
然而,我当然没有时间去逐字节地分析一个2mb的swf文件。所以,这样就出现了一系列(破解)软件来帮助我完成这样一个工作。如果这个软件遇到麻烦了(可理解为被设计者人为设置),那么我就要人为地介入这个人物并查出问题所在,找出是哪个(些)字节除了问题。然后恢复它们,并且让工作继续。没有内容可以被掩盖,唯一的限制是牺牲了我的时间以及耐心。
OK, here is the history of the war between decompiler and protection.
好,下面介绍一下“破解”与“反破解(保护)”的“战争”!
PROTECT FROM IMPORT
==(aw注释:这是官方的一种防“导入“)==
Since the birth of Flash, Macromedia gives authors a function: "password-protected from import". If you protect that SWF from import with a password, then that SWF can not be imported. Some vector graphics in the SWF can be imported to FLA file if we don't protect it. This protection serves nothing but false security.
自从 Flash诞生以来,Macromedia(公司)就给了设计者这样一个功能:“密码防止导入”。如果你对一个swf设置了这样一个参数,那么这个swf就无法被(flash)导入。要知道,如果不进行此项设置,swf文件中的矢量元件(一般为重要的脚色设定或者创意)就能被导入进入fla文件。然而这项措施只是一种表面的安全工作而已。
Think about that, your SWF is going to be played by the player of users. You can not protect from that player. So, how does it protect the SWF? Well, the protection is in the Flash software you buy. Flash refuses to import if there is a password string in the SWF. Non-sense, right? I can use hex editor to open that SWF and then delete that password string and then the protection is removed.
这么来想,你的swf文件将在用户的播放器中播放。你总不可能来保护(,或者说限制)播放器吧?
那么原理上,它是如何来保护swf的呢?其实不过是在flash中导入之前检查密码字符串。我可以用十六进制编辑器来打开这些swf文件,并且把密码字符串删除,这样,所谓的保护就被破坏(破解)了。
How easy it is! So, forget about that protect function.
如此简单,所以,忘了那项没有意义的保护措施吧!(Flash提供的所谓的导入密码)
CONVERTION TO PROJECTOR FILE AND COMPRESSION
==转换为可执行文件并且压缩==
If I convert it to a projector file in the format of EXE, can the EXE file be decompiled? Yes. The SWF is still there. There are softwares that can easily extract the SWF out. Compression may make the SWF not readable by hex-editor. Is this a protection? The compression algorithm is similar to zip. It is easily decompressed.
如果把swf文件(邦定播放器)转换为可执行的exe文件,这样的exe文件会被破解么?答案是肯定的,swf文件仍然在那里。有一些软件可以轻而易举的把swf文件提取出来。压缩也许能让swf文件无法被十六进制编辑器打开,这样能起到保护作用么?压缩算法基本与zip算法类似(可以有相应的解压缩算法)。所以,仍然容易破解。
FLASM AND THE P-CODE
==FlASM和P-CODE==
Then in the era of Flash 5, two popular tools appear. The free "Flasm" and the commercial "ASV 2.0". Flasm is "Flash asm". It interpretates the byte code in the SWF into understandable short codes (p-codes).
早在Flash5.0的时代,有两个非常流行的工具。免费的“Flasm”和商业版的“ASV 2.0”。Flasm其实就是“flash asm”(Flash+汇编),他能够把swf文件的字节全部转换为汇编短码(p-code)
For example, "a=3" is displayed as "push 'a', 3", "setVariable";
The byte-codes in the SWF is "96 08 00 00 61 00 07 03 00 00 00 1D"
比如,“a=3”被转换为“push 'a', 3", "setVariable ”
swf对应的字节码为“96 08 00 00 61 00 07 03 00 00 00 1D”
This is an in-valuable tool if we want to study the "structure of SWF format".
如果我们要学习“swf文件的结构”,这是一个非常不错的工具。
Programmers like to develop software by high level language, such as C, C++. But, when something needs efficience severely, they incorporate low level assembly codes in it. So, sometimes, authors adopt Flasm to write low level p-codes to add efficiency.
(大多数)程序员们都喜欢使用高级语言,比如,C,C++。但是,当某一些(部分、工序)对效率又非常苛刻的要求时,他们(程序员)喜欢参入一些汇编代码。所以,设计者采用Flasm来编写低级的p-codes以提高效率。
So, Flasm has a power to edit the actionscript in the SWF. You can see examples how they use this optimization technique to improve the 3d codes. However, malicious users can "edit" the SWF. Any lock in the SWF can be easily removed. We don't need a "key" to open the lock. We just remove the lock.
所以,Flasm有一种编辑swf中as脚本的能力。你可以发现有时他们(设计师)用这种优化技术来优化3D(引擎相关的)代码。然而,一些不怀好意的用户就可以借此“编辑”swf。swf中的任何掩饰都能轻易地(被Flasm)移去。我们作的工作甚至是直接将这些障碍挪走,而并非(再花时间)破解它们。
Here is a common and well known technique to protect our movie from being stolen and shown on other domain. We script a check for _url. If the _url is not our domain, then we disable the functions and display a message "You are thief". However, it is easy to remove this script by Flasm. To crack this protection, it takes not more than 1 minute.
这里有一种非常常见的技术来防止我们的swf被其他域名(即网站、站点)盗用。我们设置一个_url检测机制,如果_url检测机制检测到swf不在我们的域名播放,那么我们就禁用所有的功能,并且显示一条信息“你是一个小偷!”。然而,有了Flasm之后,就非常容易移出这段(检测_url值)的代码。不出一分钟,我们就可以破解这种swf了。
aw附:也许很多新手并不熟悉“_url”,我把帮助文档中的一段简洁放在这里,一目了然。
MovieClip._url
可用性
Flash Player 4。
用法
my_mc._url
说明
属性(只读);获取从中下载影片剪辑的 SWF 文件的 URL。(即,如果swf文件在"http://www.awflasher.com/test.swf"那么我就会返回这个字符串)
ACTIONSCRIPT VIEWER AND "void (a)<=b>"c" || 0(!1 && !0)"
脚本勘测器(着名的asv)与"void (a)<=b>"c" || 0(!1 && !0)"
ASV can extract symbols out, so the sound, shape and bitmaps can be stolen.
asv可以(从swf中)提取任何元件,因此,所有的声音、形状(矢量图)和位图会被盗用。
It also extracts the actionscript byte codes. ASV 2 tries to match the p-codes to high level actionscript. When it meets "push 'a', 3", "setVariable"; it display "a=3", a language which is the same as actionscript. However, we can easily crash it by creating codes that do not match a pattern. The codes created by Flasm are easily off the standard pattern, so ASV won't get a match. The famous script that crashes ASV 2 is ";" This is a jung-codes. It does nothing but confuse the ASV 2.
它(asv)还可以提取as脚本。asv2甚至能够把p-code还原成高级as脚本!
当它遇到 "push 'a', 3", "setVariable" 时,就会显示"a=3",这完全与我们的as脚本一致!
然而我们也可以用增加(干扰)代码的方法轻易地回避asv。用Flasm非常容易增添不规范的代码,这使得asv无法匹配破解。很着名的扰乱代码是分号“;”。它除了给asv制造麻烦,什么实际作用也没有。
However, when the protection scripts are well known, the author of ASV (Burakk) of course won't let it go. The protection technique did not last long before ASV 3.
然而,当代码的保护措施逐渐传开之后,asv的作者Burakk(burak.com)显然不会“坐以待毙”。这种保护方法也在asv3出现之后失效了。
BOOMING OF DECOMPILERS
轰炸破解者
Then the era of MX comes. Penetration rate of Flash dooms. Many decompilers appear.
MX的时代来到了。???很多破解软件涌现了出来(aw附:其中我个人最反感的就是国内XX大学XX软件研究院搬asv的XX破解软件,而且完全针对设计师的原创声音和图形!)
ASV 4 is the present version. It displays not only matched actionscript. It also display p-codes if there is no matches. If it gets trouble to interpretate p-codes, it displays the byte codes in the SWF. It also display the offset in the SWF file. This means that, it never "fails". It wont crash because at least it can display "byte codes", the byte in the SWF.
asv4是目前的(最新)版本。它不但可以显示匹配的脚本,还可以显示不匹配的p-codes。如果他遇到无法解释的p-codes,他就会显示swf的二进制代码。他甚至还可以显示swf文件的偏移。这意味着,它从不“失败”。再恶劣的情况,它也能为我们显示swf的二进制字节。
Even more, Flash MX2004 gives out javascript API to create "FLA" file. That makes it able to create a FLA file that can export to that SWF. Everything is there now.
更甚,Flash MX2004设置了JavascriptAPI来创建(编译)“fla”文件。这使得我们能自主地把fla文件编译成为相应的swf。所有的东西都浮出水面!
Let alone the sound, shape and bitmaps. Thief does not like these assets because it is so obvious to be caught. Thief likes to steal "actionscript". Because there are hidden passwords. Because there are scripts that block the normal playing of this movie. Because there are functions they can modify and use with less risk of being caught.
我们除去声音、形状和位图不谈,“剽窃者”们对这些显而易见的资源不感兴趣。他们更喜欢找出脚本代码(算法)。因为这些代码中可能有某些密码、或者对影片播放的控制。而且,某些算法可以被他们(剽窃者)修改来投入应用,这样他们被“捉住”的可能性就更小了!
If ASV can only decompile the script into byte codes, then it is useless to most thief. So, many try their best to prevent ASV 4 to decompile the script into actionscript or p-code. In fact, for most other decompiler, when the script fails to match patterns, the decompiler crashes.
如果asv只能把脚本破解成为二进制代码,那么它对大多数剽窃者而言是没有意义的。所以,很多人想方设法地来保护自己的代码,从而使得ASV4把它们(代码)解释成为二进制代码而非脚本或者p-codes。事实上,大多数没什么技术含量的破解软件在遇到这种情况下就会出现“破解崩溃”。
Here are techniques in the history. The protection effect of each technique last only for a short while and expires soon after it is "published" in the internet and revealed to the decompiler group.
这些历史上所有的保护的技术,在他们“公布”(或者因某种原因用诸于众,比如发布在互联网上)之后,都难逃厄运。

linux中 Redhat Centos ubuntu Fedora 的区别

1.都说redhat是linux的代名词,也就是说redhat的linux被大多数人认可。
可是:RedHat.Enterprise.Linux.5 与 redhat linux 9.0 还有redhat fedora core 三者之间的具体关联和区别是什么? centos又是从哪冒出来的,我们公司用的就是centos,这个好吗,好在哪里?

redhat成名的原因:历史悠久,1993年就开始做linux;公司运营,提供完整的解决方案,更专业,而不像debian是社区形式的;独创rpm包,使linux安装软件变得非常简单,免去编译的麻烦。
redhat在发行的9.03版之后,就不再延续以前的开发代号,而是以RedHat.Enterprise.Linux命名(简称rhel)即redhat企业版,现在已经开发到5,rhel好像是从3开始,需要客户购买license,即想获得系统的后续更新与服务是需要付费的(可以免费更新60天,而且如果不想享受更新,系统也是可以免费使用的。),而其个人桌面免费版交给redhat社区在做,这个社区是可以获得redhat公司支持的,这个社区发布的版本就是fedora(直译也是一种男士帽子),一年两个版本,现在已经发行到10,fedora一直是rhel的一个实验场,每个版本所采用的软件,内核与库版本几乎都是最新的,因而配置起来有些困难,不过基于redhat的基础,使用fedora的人仍然占很大的比例。centos是将rhel再次编译,去掉redhat标志,并有社区发布的linux版本,所以,centos与rhel几乎是没有区别的,主要的区别就是不用付费即可使用,从rhel的角度来说,centos是非常适合企业使用的。

2.据我所知,redhat是linux的发行厂商,除此之外还有ubuntu,debian,suse,redflag等,既然linux是免费的,为什么会有这么多公司专门做linux的发行版本呢,不赚钱为什么还要做呢?而且我觉得他们肯定能从中获取利益的,但我不知道这其中的猫腻。明白的朋友给我多讲讲这个。
如果发行版本是可以盈利的,那linux内核的作者linus能得到什么好处呢?
linux内核的每次升级都是linus这个最初的作者一直在搞的吗?每次升级花费的人力物力,对这个作者有何经纪上的回报吗?

linux盈利方式:linux个人桌面版是可以免费获得并使用的,但像redhat企业版,redflag红旗企业版,是需要购买服务的,企业版主要针对的是银行,政府,或者大型企业这种对于稳定性和安全行要求较高的行业,比起昂贵的unix,linux还是有销路的。个人桌面版也并不是无利可图的,至少很多linux社区不会赔钱,因为为社区工作的人都是分布在世界各地的,开发linux也是利用业余时间来做的,不为了获得报酬,只为了一份执着而工作,社区的linux版本发布后,用户可以购买linux安装光盘,虽然光盘很便宜(比起微软的系统),但由于成本几乎为0,所以还是有盈余的。再有,现在市面上有很多预装ubuntu的笔记本销售,比如dell,那么戴尔肯定要付给ubuntu费用的,当然,这个费用要比预装vista低得多。

现在linux的内核应该是GNU在做,而不是linus。

3.上面说了这么多发行版本的linux,请问哪几种比较好,好在哪里?是不是根据linux的用途不同,选择linux的版本也应有所不同呢?麻烦具体说说各个版本的长处与缺点。

redhat企业版(rhel),适合企业使用,出色的稳定性和兼容性表现在每个版本都使用了比较成熟的库与内核,并且对一些大型的EDA软件都预先进行了测试安装,比如cadence,所以比较适合做服务器和工作站,但不适合当个人桌面,因为不购买license,就不能享受到丰富的更新,而且由于内核与库都比较保守,有点跟不上linux的发展速度,以至于很多娱乐软件安装起来非常困难。centos与rhel类似。

fedora,前面已经说了,这个版本每次发行都比较冒进,以至于很多驱动程序都不能很好的配置,但最新的fedora10还是很保守和稳定的。yu软件源基于rpm包管理,安装软件很方便。

ubuntu,基于debian,桌面环境以gnome为主,是目前最流行的linux个人桌面,它的优点是配置起来非常简单,安装完系统之后,只要硬件不是太新,基本不用进行其他配置,硬件都可以识别并安装好驱动。而且其apt更新源服务器中的软件非常丰富,只要打一条命令,就可以自动从网络下载安装所需软件。ubuntu安装方便,甚至于可以使用wubi将linux安装在windows分区。ubuntu还有很多衍生版本,包括Kubuntu(桌面采用KDE,较为华丽),xubuntu(采用xfce,要求配置较低),eubuntu(面向儿童和教育),用户可以根据需求,偏好,和硬件配置进行选择。

suse,被誉为最漂亮的linux发行版本,当然,其本质和其他版本都是一样的,只是在窗口美工上开发者下了一定功夫,而且获得华丽的同时当然也需要付出更高的系统资源占用。其他的linux版本通过一些改造,完全是可以实现suse的效果的。

redflag,中科院开发的linux版本,主要面向政府用户,其个人桌面版免费,这个版本的美工上与windows非常接近,是使用者的入门难度降低,但实际上桌面也是基于KDE的,很平常。

puppy,一个非常小巧的linux版本,安装镜像90多M,却包括了图形桌面,浏览器,办公等常用的软件,系统运行时都存在与内存中,据说安装在U盘中的puppy,在系统启动后,可以将U盘拿掉,系统依然可以运行。

4.我对linux的简单了解,各个发行版本使用的linux内核都是同一个。只不过可能随着各版本的发行时间不同,采用的内核版本会不同。不知道理解的对吗?

linux的内核目前还在飞速的发展,现在常见的是2.X版本,X为奇数,为不稳定版,x为偶数为稳定版,比如rhel采用的2.4和目前最新的,很多个人桌面采用的2.6。不同的linux发行版本采用的内核不尽相同,比如fedora一般都是采用最新的内核。

5.之所以会有这么多问题,是因为我此时的大脑对linux的理解非常混乱,对于操作系统的理解只有正版的windows和盗版的windows的简单理解。暂时先不谈盗版问题,就正版而言,我知道linux部分版本是收费的,大部分可能是免费的,为什么会出现收费与免费两种现象? 作为企业级的服务器应用,免费版本的linux是否可以应付得了,免费的是不是比收费的性能安全上要差好多????具体说说免费和收费的linux,谈谈二者之间的区别。

前面已经提到一些了,至于免费版,如果采用较为保守的成熟的版本,稳定性应该是可以保证的,安全方面,不是很了解,从我单位使用的rhle来看,与普通linux个人桌面并无大的区别。

6.OpenSource与Free:收费的linux版本,是不是就不算开源的操纵系统了呢?收费的linux肯定不会开源,是不是?因为如果开源了,人家都知道你的源代码了,开发商就没办法收费卖他们的发行版本的linux了。不知道理解的对吗?请具体说说"开源与免费"

拿redhat来说,他们既有收费的rhel,也有反编译rhel得到的并且是开源的centos,使用那个完全取决于用户自愿。这样来看,开源与免费的区别仅在于开源的东西,在遵守gnu协议的基础上,任何人都可以得到程序的源代码,并可以自己修改,并可以再发布;而免费的就只能免费使用,而不可修改了。

7.如果可以的话,再介绍一下linux的学习方法,和linux好的入门书籍。在日常工作当中,linux的应用会有很多角色,我主要是想学习LAMP架构下的WEB开发,不知道应该侧重学习linux哪些应用?哪些是LAMP程序员必须熟练掌握的LINUX技术,在求职应聘LAMP程序员的职位,一般面试考核linux方面都是哪些技能?

(不懂)
请参考

⑺ 函数产生的社会背景

历史表明,重要数学概念对数学发展的作用是不可估量的,函数概念对数学发展的影响,可以说是贯穿古今、旷日持久、作用非凡,回顾函数概念的历史发展,看一看函数概念不断被精炼、深化、丰富的历史过程,是一件十分有益的事情,它不仅有助于我们提高对函数概念来龙去脉认识的清晰度,而且更能帮助我们领悟数学概念对数学发展,数学学习的巨大作用.
(一)
��马克思曾经认为,函数概念来源于代数学中不定方程的研究.由于罗马时代的丢番图对不定方程已有相当研究,所以函数概念至少在那时已经萌芽.
��自哥白尼的天文学革命以后,运动就成了文艺复兴时期科学家共同感兴趣的问题,人们在思索:既然地球不是宇宙中心,它本身又有自转和公转,那么下降的物体为什么不发生偏斜而还要垂直下落到地球上?行星运行的轨道是椭圆,原理是什么?还有,研究在地球表面上抛射物体的路线、射程和所能达到的高度,以及炮弹速度对于高度和射程的影响等问题,既是科学家的力图解决的问题,也是军事家要求解决的问题,函数概念就是从运动的研究中引申出的一个数学概念,这是函数概念的力学来源.
(二)
��早在函数概念尚未明确提出以前,数学家已经接触并研究了不少具体的函数,比如对数函数、三角函数、双曲函数等等.1673年前后笛卡儿在他的解析几何中,已经注意到了一个变量对于另一个变量的依赖关系,但由于当时尚未意识到需要提炼一般的函数概念,因此直到17世纪后期牛顿、莱布尼兹建立微积分的时候,数学家还没有明确函数的一般意义.
��1673年,莱布尼兹首次使用函数一词表示“幂”,后来他用该词表示曲线上点的横坐标、纵坐标、切线长等曲线上点的有关几何量.由此可以看出,函数一词最初的数学含义是相当广泛而较为模糊的,几乎与此同时,牛顿在微积分的讨论中,使用另一名词“流量”来表示变量间的关系,直到1689年,瑞士数学家约翰·贝努里才在莱布尼兹函数概念的基础上,对函数概念进行了明确定义,贝努里把变量x和常量按任何方式构成的量叫“x的函数”,表示为yx.
��当时,由于连接变数与常数的运算主要是算术运算、三角运算、指数运算和对数运算,所以后来欧拉就索性把用这些运算连接变数x和常数c而成的式子,取名为解析函数,还将它分成了“代数函数”与“超越函数”.
��18世纪中叶,由于研究弦振动问题,达朗贝尔与欧拉先后引出了“任意的函数”的说法.在解释“任意的函数”概念的时候,达朗贝尔说是指“任意的解析式”,而欧拉则认为是“任意画出的一条曲线”.现在看来这都是函数的表达方式,是函数概念的外延.
(三)
��函数概念缺乏科学的定义,引起了理论与实践的尖锐矛盾.例如,偏微分方程在工程技术中有广泛应用,但由于没有函数的科学定义,就极大地限制了偏微分方程理论的建立.1833年至1834年,高斯开始把注意力转向物理学.他在和W·威伯尔合作发明电报的过程中,做了许多关于磁的实验工作,提出了“力与距离的平方成反比例”这个重要的理论,使得函数作为数学的一个独立分支而出现了,实际的需要促使人们对函数的定义进一步研究.
��后来,人们又给出了这样的定义:如果一个量依赖着另一个量,当后一量变化时前一量也随着变化,那么第一个量称为第二个量的函数.“这个定义虽然还没有道出函数的本质,但却把变化、运动注入到函数定义中去,是可喜的进步.”
��在函数概念发展史上,法国数学家富里埃的工作影响最大,富里埃深刻地揭示了函数的本质,主张函数不必局限于解析表达式.1822年,他在名着《热的解析理论》中说,“通常,函数表示相接的一组值或纵坐标,它们中的每一个都是任意的……,我们不假定这些纵坐标服从一个共同的规律;他们以任何方式一个挨一个.”在该书中,他用一个三角级数和的形式表达了一个由不连续的“线”所给出的函数.更确切地说就是,任意一个以2π为周期函数,在〔-π,π〕区间内,可以由
�表示出,其中
��富里埃的研究,从根本上动摇了旧的关于函数概念的传统思想,在当时的数学界引起了很大的震动.原来,在解析式和曲线之间并不存在不可逾越的鸿沟,级数把解析式和曲线沟通了,那种视函数为解析式的观点终于成为揭示函数关系的巨大障碍.
��通过一场争论,产生了罗巴切夫斯基和狄里克莱的函数定义.
��1834年,俄国数学家罗巴切夫斯基提出函数的定义:“x的函数是这样的一个数,它对于每个x都有确定的值,并且随着x一起变化.函数值可以由解析式给出,也可以由一个条件给出,这个条件提供了一种寻求全部对应值的方法.函数的这种依赖关系可以存在,但仍然是未知的.”这个定义建立了变量与函数之间的对应关系,是对函数概念的一个重大发展,因为“对应”是函数概念的一种本质属性与核心部分.
��1837年,德国数学家狄里克莱(Dirichlet)认为怎样去建立x与y之间的关系无关紧要,所以他的定义是:“如果对于x的每一值,y总有完全确定的值与之对应,则y是x的函数.”
��根据这个定义,即使像如下表述的,它仍然被说成是函数(狄里克莱函数):

f(x)= 1���(x为有理数),
0���(x为无理数).

��在这个函数中,如果x由0逐渐增大地取值,则f(x)忽0忽1.在无论怎样小的区间里,f(x)无限止地忽0忽1.因此,它难用一个或几个式子来加以表示,甚至究竟能否找出表达式也是一个问题.但是不管其能否用表达式表示,在狄里克莱的定义下,这个f(x)仍是一个函数.
��狄里克莱的函数定义,出色地避免了以往函数定义中所有的关于依赖关系的描述,以完全清晰的方式为所有数学家无条件地接受.至此,我们已可以说,函数概念、函数的本质定义已经形成,这就是人们常说的经典函数定义.
(四)
��生产实践和科学实验的进一步发展,又引起函数概念新的尖锐矛盾,本世纪20年代,人类开始研究微观物理现象.1930年量子力学问世了,在量子力学中需要用到一种新的函数——δ-函数,

即�ρ(x)= 0,x≠0,
∞,x=0.

��δ-函数的出现,引起了人们的激烈争论.按照函数原来的定义,只允许数与数之间建立对应关系,而没有把“∞”作为数.另外,对于自变量只有一个点不为零的函数,其积分值却不等于零,这也是不可想象的.然而,δ-函数确实是实际模型的抽象.例如,当汽车、火车通过桥梁时,自然对桥梁产生压力.从理论上讲,车辆的轮子和桥面的接触点只有一个,设车辆对轨道、桥面的压力为一单位,这时在接触点x=0处的压强是
��P(0)=压力/接触面=1/0=∞.
��其余点x≠0处,因无压力,故无压强,即�P(x)=0.另外,我们知道压强函数的积分等于压力,即
�函数概念就在这样的历史条件下能动地向前发展,产生了新的现代函数定义:若对集合M的任意元素x,总有集合N确定的元素y与之对应,则称在集合M上定义一个函数,记为y=f(x).元素x称为自变元,元素y称为因变元.
��函数的现代定义与经典定义从形式上看虽然只相差几个字,但却是概念上的重大发展,是数学发展道路上的重大转折,近代的泛函分析可以作为这种转折的标志,它研究的是一般集合上的函数关系.
��函数概念的定义经过二百多年来的锤炼、变革,形成了函数的现代定义,应该说已经相当完善了.不过数学的发展是无止境的,函数现代定义的形式并不意味着函数概念发展的历史终结,近二十年来,数学家们又把函数归结为一种更广泛的概念—“关系”.
��设集合X、Y,我们定义X与Y的积集X×Y为
��X×Y={(x,y)|x∈X,y∈Y}.
��积集X×Y中的一子集R称为X与Y的一个关系,若(x,y)∈R,则称x与y有关系R,记为xRy.若(x,y)R,则称x与y无关系.
��现设f是X与Y的关系,即fX×Y,如果(x,y),(x,z)∈f,必有y=z,那么称f为X到Y的函数.在此定义中,已在形式上回避了“对应”的术语,全部使用集合论的语言了.
��从以上函数概念发展的全过程中,我们体会到,联系实际、联系大量数学素材,研究、发掘、拓广数学概念的内涵是何等重要.

⑻ 现在最流行的编程语言是什么初学者应该学哪一门

今天这篇文章筛选出一些主流编程语言,对语言特性与环境稍作介绍,希望可以帮助到一些编程初学者与有兴趣学习编程的朋友,供大家了解与选择,少走弯路。Java、C++、C#、python、PHP……当然,这些仅是我推荐的。我还将介绍其他主流语言与适于初学者学习的编程语言与一些编程学习指导。

Java,面向对象、安全、跨平台、强大稳健、流行的程序设计语言与环境。由 Sun 公司开发,目前由 Java Community Process 控制。近些年来非常流行且稳定,未来生命周期较长。语言风格较为接近 C++ 与 C# ,而最为人熟知的便是跨平台性。Java 的跨平台性已得到了广泛的认可,在计算机的各种平台、操作系统,以及手机、移动设备、智能卡、消费家电…均已迈入成熟的生产化。而国内的 Java 人才需求前景目前也是大好。

Java 的官方网站是 http://java.sun.com/。Java 分为 JavaSE(标准版,面向初学者与桌面开发)、JavaEE(企业版,也称 J2EE,面向企业级开发、网络开发,包括了为人熟知的 JSP,并包含了 JavaSE 的所有内容)、JavaME(微型版,为手机、PDF、机顶盒、消费家电等嵌入设备开发),目前还有正在发展的 JavaFX(一种富Internet 应用程序开发的脚本语言)。Java 的运行环境是 JRE,开发环境是 JDK,均可以在其官方站点下载。开发平台的构建较为简单,开发者下载并安装 JDK 即可,目前 JDK 最新版本是 1.6.15。

最重要的——它们都是免费、开源的。而 Java 不需要指定集成开发环境(IDE)——JDK 和记事本足以完成。不过在此我推荐使用 Notepad++ 或 UltraEdit 作为代码文本编辑器;Eclipse 与 NetBeans 这两款免费而又强大成熟的 Java 集成开发环境(IDE)。

最近也在进一步学习中开始写 Java 的编程书籍,在此透露一下,它是一本内容全面、语言生动、较快入门、注重实例、分享经验、提供编程思维与设计模式的 Java 编程书。这方面我需要一段时间的努力后,才能与您见面。不过最重要的,这本书将是免费的。在保证专业性与内容质量的同时,这本书将提供免费的阅读与下载。

C++,应用最广泛、成熟、强大、复杂、流行的程序设计语言。你目前正在使用的 Windows 或 Linux 操作系统的大部分内容均出自 C++ 的程序员之手,C++ 非常强大——近乎无所不能,而 C++ 代码经过编译后将成为计算机的二进制代码的可执行程序,所以在兼容性、性能上均为优秀。当今如果你学习 C++,再配合 WIN32SDK、MFC 或是 .NET CLR,绝对是开发桌面程序的首选语言。从名字可以看出,C++ 改进自 C 语言,特别是面向对象方面的扩展,但学习 C++ 可以直接学习,不需要且不建议先学习 C 语言基础,可以把 C++ 当作一门全新的编程语言。

如在 Windows 平台下,C++ 首选的集成开发环境(IDE)自然是 Visual C++,它包含在 Microsoft Visual Studio 之中,最新版本是 2008。你可以选择微软官方提供的 Visual Studio 2008 专业版——这是最好的选择!微软提供90天的试用版,安装镜像较为庞大,与正式版没有区别,同时包含了 MSDN Library(最权威的开发文档),唯独只是授权序号的区别。下载安装后即可使用。当然,你也可以进行简单的操作将其变为正式版。不过在此不是鼓励大家使用盗版软件,如在非商用的情况下,这种手段是可行的,也会加快你的学习进度与质量。此外微软也提供了 Visual Studio 2008 速成版,又称为学生版,它是免费的,如仅是学习完全足够。

除了微软的 IDE,你还有其他的选择。在 Windows 下搭建 Eclipse + CDT + MinGW,Linux 和 Unix 下可以使用 Eclipse + GCC++,这些都是开源、免费的。或是更基本的……你主需要一个记事本与 C++ 编译器,当然我不推荐这样做。

C#,读作 “C Sharp”。微软的 C# 就好似是 C++、Java、Delphi 与 Visual Basic 的结合体,是新兴、易学、强大的程序设计语言,它更像 Java——完全面向对象,开发与运行都在 .NET Framework 环境中。使用微软强大的 Visual Studio 集成开发环境,这是快速开发 Windows 平台桌面应用程序的最好选择。听起来有点像 VB?不过 C# 比 VB 可强大多了。不过 C# 编译后的程序如 Java 一样是中间语言,运行程序的计算机需要安装 .NET Framework 运行环境,不算大也不算小。但在微软的 .NET 推出多年后的今天,它还没有较好的普及开,可能对你的程序传播会有一定影响。同时 C# 也可以开发 ASP.NET 的动态网页程序,这是曾经风火多年的 ASP 的替代产品。

开发 C# 程序,使用微软的 Visual Studio 是最好的,也是几乎唯一的选择。同 Visual C++ 的环境搭建基本雷同,在此不再复述。目前 .NET 环境已经发展到 3.5,C# 已经发展到 C# 4.0,学习 C# 请选择一本实时性、专业性、全面性的好教程。微软的 Visual Studio 2010 近期也将发布,届时将搭载更为强大的 C# 语言与集成开发环境(IDE)。

Python,新兴的面向对象脚本语言。说其“新”其实并不是如此,Python 已经具有十多年的历史,且已有非常多的开发者与使用者,最着名的就属 NASA(美国国家航空航天局)。其语言特点是语法清晰简洁,便于学习使用。而 Python 作为脚本语言,跨平台性非常好,几乎在所有操作系统中可以使用,在 Linux 操作系统中便大多原生支持 Pyhton。实质上这款语言非常优秀,近年来用户量飞速增长,可以进行桌面程序开发、动态网页开发、数据运算等。

不需要担心商业授权、付费这些额外的问题,Python 本身就是免费软件、自由软件。在 Python 官方网站 http://python.org/ 你可以下载适用于您操作系统的 Python 开发与运行环境。需要注意的是目前 Python 流行版本有 Python 2.6 与 Python 3.1,2 与 3 的区别较大,虽没改变本质,Python 3 但并不向下兼容。当然这里我们建议你学习 Python 3,它很快就会被流行。

Ruby,较 Python 来说更新兴的面向对象脚本语言,由日本人开发。实质上它与 Python 是同类,具有共同的一些特性、脚本语言、面向对象、免费开源、简洁强大、跨平台性,所以在此就不多作介绍。Python 与 Ruby 都是目前的新兴流行脚本语言,不过它们作为两款出生与成长不同的孩子,终究不同,选择哪一个还得取决于你的应用需要。在 Ruby 的官方中文站点获取更多信息,下载与安装 Ruby 开发与运行环境。

PHP,几乎你现在看到的像是门户网站、博客、论坛…它们除去华丽的外表外,网页内部的程序与数据处理都离不开动态网页技术,而 PHP 正是目前最流行、强大、稳健的动态网页开发脚本语言。它的语言风格类似 C、Perl,可以集成在 HTML 网页代码只中,也遵循面向对象,并且易于学习。其实 PHP 还可以开发桌面应用程序,不过因为它的优秀,已主要作为了动态网页开发语言。如果你要学习开发 Web 应用程序,或是今年流行的 Web2.0 站点,PHP 绝对是你的首个选择。因为国内有相当多数量的 PHP 开源程序与学习资源,学习 PHP 的道路一路都会平坦。

因为是动态网页开发,所以开发 PHP 的 Web 程序需要搭建环境——需要同时安装一个 HTTP 服务器与 PHP 解析程序,大多情况下你还要一个数据库服务器例如 MySQL、PostgreSQL。目前最流行的开发环境组合就是 Linux + Apache HTTP Server + MySQL + PHP,简称为 LAMP,Linux 操作系统大多均带有了这些程序。而如果在 Windows 环境下,你可以选择自行搭建各种匹配的环境,甚至让 IIS 作为 PHP 的 Web 服务器。或是想图省事,你可以下载安装一个 XAMMP,PHP 环境搭建一步到位!目前国内外大部分数据服务商(IDC)都提供了完美支持 PHP 的虚拟主机,你不用担心程序开发后的运行环境问题。开发与学习推荐的 IDE 有 Zend Studio、Eclipse 甚至是 Dreamweaver。

Perl,最具成熟、灵活性的脚本语言。学习较为容易,但却非常强大。Python 语言的许多特性便是有借鉴自 Perl。Perl 拥有一个大型的第三方代码库——CPAN,极大的方便于程序人员的开发和使用。在官方网站下载 Perl 环境,所有的 Linux 系统都几乎集成了 Perl。脚本语言的开发都推荐在 Notepad++ 等高级文本编辑器中完成。

Pascal,曾经风靡全球的高级程序设计语言,特点是语言简明、结构严谨、较高灵活性,名气不下于 C++。前几年流行的 Delphi(一种 Windows 应用程序快速集成开发环境)使用的便是 Pascal 语言,国际信息学奥林匹克、中国信息技术奥林匹克竞赛的编程项目主要语言。如今 Pascal 语言在实际应用领域已逐渐被人舍弃,但依然是非常适合初学者的编程语言。你可以下载使用 Free Pascal 这个目前最好的 Pascal 编译环境,也可以使用 Deiphi。

Basic,或称为 Basic 系列语言,主要有 QuickBasic、QBasic、VBScript、Visual Basic、Visual Basic .NET,甚至有适于儿童学习的 Small Basic。如今 PC 计算机中流行中的 Basic 语言,正是鼎鼎大名的比尔·盖茨先生编写,但最初的 Basic 语言来自上世纪60年代两位美国计算机科学家。

上世纪末期与本世纪初期,Visual Basic 作为一款简单易学的 Windows 应用程序开发环境,曾在中国被大量学习使用,现在你在书店还可以看到许多 Visual Basic 考试书籍与题目的身影,不过这些已经是早已淘汰的 VB6 了,我国的计算机等级考试大纲一直都存在严重问题(这是我的想法)。当时被流行的 VB6 让很多人快速的迈入了程序员的步子,但 VB6 因为并不强大,并不能有效开发大型程序。VB 的成功并不在于改进后的 Basic 语言本身,而应是优秀的集成开发环境(IDE)与开发 Windows 程序的便捷特性性。

微软公司在2002年推出了 Visual Basic .NET,正式推出 .NET 环境并让 VB 作为首批成员。如今的 Visual Basic 已经非常强大,但已完全的依赖于 .NET Framework 环境,可以开发 ASP.NET 程序。而且所有优秀特定均已被 C# 吸收,它们如今的差别并不大。我更倾向推荐有意学习 VB 的朋友去学习 C#。

汇编语言,又称组合语言,它是一种低级计算机语言,直接与计算机硬件底层交互。在上世纪 C、Pascal 等高级编程语言出现之前被广泛使用,如今只用于一些底层应用——如硬件驱动程序的开发。汇编语言的难度非常高,使得早期的软件开发工作只有一些“天才级”或“怪才级”的人才能胜任。如今汇编语言基本上不用于软件的开发,但对于程序开发人员来说,学习汇编语言可以让你深层了解计算机与计算机程序的原理。如今汇编语言还被国内部分大学作为必修教程,而汇编语言也会有利于程序的反编译等工作。

好,至此目前主流的程序开发语言均已作介绍。下面是 Q&A 时间。

问:说了这么多,到底哪门编程语言适合我?我该学哪一个?

答:程序语言并不适合于人,而适用于所要开发的领域或软件的需求。你不能光从名称看出某一门编程语言的含义,也不能跟风——别人学什么我就学什么。而在于你的兴趣,或是你要涉及的领域、开发的程序。如果你要开发桌面程序,那就可以学习 C++、C#、VB、Java……如果你要开发动态网页,就可以学习 C#、VB、Java……如果你要开发手机程序,就可以选择 C++、Java 或 C#。我提供这么多内容,最重要的便是让你了解每一种编程语言的主要特性,而供你选择。或者你说……“我实在不知道我要选择哪个,我只是想学,这些特性或领域我都不了解也不在乎。”。如果你确定是如此,而如果你真的想涉及程序开发,建议你继续稍作了解。或学习目前流行的“完全面向对象”的编程语言 Java、C# 或 Python,这三个编程语言都很优秀,这是我的推荐。而在深入学习后,你会发现了解这三门语言的其中一个,再想学其它编程语言也可以做到“触类旁通”,很快可以入手,因为这些语言的本质都是一样的,更何况选择一款编程语言就可以开发出大部分这些语言都可以开发的软件,做这些语言都可以做的事情,只是方式上的不同。

问:我想学习编程,据说要求数学头脑或英语能力?或已经是计算机高手?

答:如果你已经是一个成年人,这些都不是问题。实际上程序开发和数学虽息息相关,但在大部分应用中对数学水平的要求并不高,初中毕业就可以,甚至小学也没问题。而对于初学者,这些程序开发语言虽使用英文,但实际学习过程中,需要记忆的英文单词并不多,稍作记忆和理解即可掌握,对开发者的英文没有要求。但是!一旦你涉及到高水平的或是企业级的开发项目,会有更多你所未涉及的知识需要在技术文档中查阅,如 API、SDK 文档,或是 MSDN,这些文档中有一部分内容是英文的。就例如腾讯公司招聘程序员,就会要求开发者的英文水平可以基本读懂这些技术文档。事实上对英文的要求就正如此,而我建议软件开发者在平日的学习中对英文水平进行一个修炼,对以后的开发、学习、了解新技术与资讯、编程思想都会有帮助。计算机水平上没有什么特定要求,会打字就可以学编程。不过你需要对所开发的环境如 Windows 有了解,不然你连新建保存文档,或是操作系统是什么都不明白,你如何顺利学习编程?不过这些并不是大问题,基本上可以迅速的学习到。

问:如何学?如何学好?如何编写程序?

答:计算机程序的开发具有点、线、面的性质,更多的需要灵活性。第一,选择一本好教材、好老师,掌握你所学习的编程语言的概念、基本原理、基本语法,然后逐渐深入,完成语言知识面的学习。第二,熟练编程语言后,你需要学习一种叫做设计模式的理论,与其说有助于开发,不如说是必须进行选择与学习,培养良好的编程思维习惯。第三,我们的程序需要做的事情就是解决问题!利用掌握的知识,多练习,多实践,多解决身边的问题。开拓你的大脑创造力,你离编程大师只有一步之遥。学习编程语言就如学习一般显示语言类似,掌握语言的文字、单词、语法,多进行阅读与训练,然后动用你的大脑控制笔去书写优美的篇章。

问:还有什么要求?

答:学习程序开发,说难就难,说简单就简单。要明确兴趣与方向,要树立并坚定目标。学习过程中需要多努力,多练习,多问,多 Google 一下,多思考,多想如何“解决问题”!如能做到这些,真的足够了。

⑼ 不小心把.java文件删除了,只剩下.class文件.能不能恢复

用反编译工具可以将.class文件反编译为.java文件
下载地址http://www.greendown.cn/soft/11251.html
不过反编译并不能得到和原始文件一摸一样的java文件,会有一些不同

阅读全文

与反编译历史相关的资料

热点内容
道路工程概论pdf 浏览:388
超棒数学速算法大全 浏览:936
小米易语言登录源码 浏览:30
砖墙内加密钢筋 浏览:992
乡关何处pdf 浏览:84
小猪领赞小程序源码 浏览:336
python曲线如何原路返回 浏览:430
pdf快速看图破解版 浏览:294
怎么找一个软件里面的源码 浏览:774
python设定安装源 浏览:833
boss直聘程序员面试方式 浏览:486
cc服务器怎么处理 浏览:457
福万通app哪里查到期 浏览:346
苹果换手机如何还原app 浏览:562
云服务器测试技巧 浏览:548
网盘里面的文件如何解压 浏览:465
linux查看应用的端口 浏览:100
拉伸训练pdf 浏览:94
如何拨号到中央服务器 浏览:650
中国天才少年程序员 浏览:352