⑴ 反编译需要什么语言
不同编程语言有不同的反编译工具,比如java反编译工具xjad
⑵ 想做副业,学编程,学哪种语言比较好(零基础)
最近有很多同学问我,我是一个零基础的小白,到底学习哪一种语言比较好?作为一个写了十年代码程序员,用过七种语言的我来说,必须要强调一下,语言只是一种工具,当你真正理解了要做的事,选一个顺手的就行。跟工具一样,哪天有新的好用的语言出来,把旧的扔掉就好。
我今天写这篇文章的目的是想给大家一个参考。
决定用什么语言的因素有有很多,比如性能,内存占用,开发难度,运维难度,目标平台,可执行文件大小,代码可维护性,项目周期,项目规模,招聘难度,团队构成,历史遗留问题,甚至派系斗争等。
比如腾讯就有大量历史遗留的C和C++的服务器代码,毕竟20年前没得选。又比如空降技术负责人可能会为了让自己人上位,让自己团队出成绩,选择用其他语言或者框架对本来工作良好的系统进行重构。
下面开始聊语言
python
先说python,是因为这个语言小学生都开始学习了,以后不会python要被小学生欺负了。语法简单,除了前端几乎万能,可用的库极其丰富,能想到的功能几乎都有现成的库可以用。不管是搞爬虫,做人工智能,机器学习,数据分析,还是自动化运维,自动化测试,python几乎都是首选。不想当程序员还想学习一门语言的话,学习python就没错了。缺点是慢,但是能让机器累的事,何必让人来累。
php
PHP是世界上最好的语言,可能这个已经成为很多程序员的梗。
我没用php开发过大型项目,自己做东西的感觉是这语言非常简单,以前用的人很多,招聘容易,但是不适合做复杂的项目。现在用得越来越少了,迅雷以前有不少运营活动页面是PHP做的。
C
C的语法足够简单,应该是最接近机器语言的高级语言,适合编写操作系统底层,驱动程序,硬件相关的程序以及看重性能的程序。由于过于简单,构建大型程序的复杂度非常高,建议想往研发方向走的同学都学习一下C语言。
可以对计算机一些底层原理了解,比如指令执行过程,内存管理,异常,多线程,编译过程等又更深层次的了解。掌握C语言再学习其他语言会变得很轻松,学习破解也有帮助,毕竟汇编基本都可以反编译出C代码。
C++
C++是一个糟糕的语言,这不是我说的,这是Linux之父说的。我自己用C++四五年时间,越到后面就感觉这句话越有道理。
首先C++的强大是毋庸置疑的,但是作为一个跟C一样偏底层的语言,如果不理解写的代码背后到底发生了什么事,如果出了错,你是永远不可能知道错在哪里的。
一个没有垃圾回收的语言,不用智能指针很容易导致内存泄漏,错误的用了智能指针不但内存泄漏之后不好解决,还容易导致提前释放等问题。
C++支持强制类型转换,如果转换前后的内存结构不一样,很有可能导致各种隐性问题。还有Java之类非原生语言的异常处理都是语言自定义的异常,而C和C++中的异常很多都是操作系统层的异常。
Windows下一个简单的try catch,你觉得可以抓到try中所有的异常,但是由于异常处理函数的指针保存在栈上,这时一个栈溢出可能直接导致异常处理函数指针被覆盖,异常会出现在你意想不到的地方。微软有大神曾说过,想你的代码后续可维护就删掉代码中所有的try catch。
又由于语言非常底层,当程序出现底层崩溃的时候,想解决掉这个崩溃往往要读一些汇编,这时候如果使用了大量的模板,比如stl和boost,那生成的汇编几乎完全不可读。看过stl代码的人应该都知道这玩意儿写的有多晦涩,就导致了你想用一个C++库,如果不了解这个库的实现原理,那大概率会出错。
C++的复杂度又让你很难真的理解那个库的原理,结论就是C++强大,但是必须用的人也强大。C++直到现在还在疯狂的增加特性,我用了四五年我自己都不敢说自己会玩C++,能用其他语言就优先考虑其他的,把C++作为最后的选项,不建议新手学,除非你的目标领域必须使用。
Rust
Rust是为了解决C和C++的各种问题而出现的语言,性能接近C++,通过所有权限,不用垃圾回收就解决了生命周期管理。有包括管理,又有极其严格的编译器检查,能编译通过的代码就不会有大问题,编译器直接把水平不够的新手挡在了门外,通过解决出问题的人是方式,从根本上解决了C++的问题。
我第一次用rust写个小程序就跟编译器较了一天的劲。它的缺点就是学习难度太大,语言太小众,库太少,很多轮子都要自己造。但是随着微软之类的大厂使用,相信之后发展会比较好,新项目如果需要C或者C++可以优先考虑rust。
Java
我现在主要也是一个Java程序员,对于Java这个语言我并没有什么很特别的感觉,配套设施完善,什么都能干,体验非常赞,就是内存占用有点难看。想搞安卓考法的必修,阿里有大量的服务器项目使用Java。
唯一想吐槽的是gradle这个构建系统,版本问题搞得很头疼。
JavaScript
js是前端的必修课,没得选,然而node让js也万能了。用node做过后端项目后,感觉动态类型语言还是不太适合,由此带来的低级错误很多,虽然可以用typescript解决,但是最终还要编译成js,无法直接调试。由于没有原生的多线程支持,利用cpu也只能通过开多个进程的方式。小项目的后端做着玩还可以,大点的还是考虑Java或者是go吧。
Lua
Lua是极其轻量的语言,语言特性接近js,runtime非常小。作为一个脚本语言,性能出色,内存占用低,很适合各种嵌入式设备或者插件系统。
Go
这玩意儿一定是谷歌为了解决自己后端项目中遇到的问题而开发的语言,各种特性直戳痛处。语法简单,规范严格,这就让不管什么水平的开发写出来的代码差距都不会太大。
静态类型,没有默认参数,没有异常处理,可以降低犯低级错误的概率。编译成原生代码,可内嵌C代码,原生支持协程和多线程,可以保证性能,支持跨平台编译,输出单文件方便部署,这些优点带来的问题是Go的指向性太强,只适合做高并发api类的后端服务。
想用Go开发其他任何领域都会觉得特别别扭,类似C的语法过于简单,又没有泛型,导致很多功能都显得很啰嗦。但由于Go解决了部署问题,跨平台问题,降低了研发人员的水平要求,降低了犯错误的概率。
关于这些语言的性能没有绝对的排序,但根据我做项目带团队和面试的经验,绝大多数的程序员的水平都还碰不到语言的性能瓶颈。一般来说对语言的理解以及多线程,算法,网络,数据库,缓存。硬件甚至业务的理解都比语言的性功能影响更大。
再次强调,语言只是工具,只有适不适合,没有好与不好。基础强大,用哪个都不怕,基础太差,用什么都尴尬。
只是会语法并不是掌握了这门语言,要知道程序背后发生了什么。比如C++的对象模型,Java的虚拟机,垃圾回收,Go的协程,js的promise,rust怎么编译通过等等。
基础是一门语言的核心,不管学习哪一门语言都要重点学好基础。
⑶ VB6可以被很多软件反编译,那学VB还有何用
理论上,任何软件都可以被反编译,只是时间问题。与汇编、C语言比较VB6属于比较难反编译的了,如果不是做商业软件,学一种编程语言的作用是能方便工作,提高效率。
VB6编译器确实过时了,而且VB6有自身不足,但是一般软件还是可以做的,而且比VB.net要小很多,VB.net的优点是很多东西都是现成的,比如菜单,可以直接设置出各种效果来,用VB6就要掌握API和自绘技术,或者借用第三方控件。但是通过这样可以提高自己的编程水平,缺点是开发效率低。
⑷ 程序员学哪种语言最好
1 、对普通人而言不建议C或C++
高手请略过,该语言底层,比较难,用的少。但对该语言一直怀有深深的敬意
2 、不建议学习Oracle、Cisco和C#系列
使用的公司少,就业面狭窄。Oracle主要金融、银行在用,Cisco是路由器技术,用的公司也比较少,C#运行的Window服务器环境貌似只占了5%,这些语言并不是说不行,而是使用面狭窄
具体看下不同语言的差异
3、Web前端
web前端是最近才火的一个专业,遥想两年前,做前端的还是被亲切的称为“前端仔”,从事的是一些切图、布局、做浏览器兼容性等等不是那么有技术含量的工作,很多公司的前端甚至外包出去,“前端仔”一直生活在程序员鄙视链的最底层。
4、服务端开发
如果想学服务端开发,随便选一门语言即可,无论是Java、PHP还是Python,都是得到广泛应用。
服务端主要工作包括业务逻辑的开发、数据模型的设计、可能还有中间件的开发、部署上线任务等等。
服务端工程师的发展方向是架构师以及CTO了,需要根据用户量,产品特征来设计整个系统的架构。比如现在需要做一个互联网产品,这个产品的用户量你需要估计有多大,根据用户量推算需要多少服务器,是否要做分布式,前端缓存要不要,用什么语言开发等等.....这都是架构师或者CTO需要解决的工作。
其实服务端还包括很多内容,比如可能需要开发中间件,还需要部署开发测试环境,自动化测试工具等等,这些都属于后端工程师的范畴。
5、机器学习工程师(数据科学)
其实市面上对机器学习的理解不对的,机器学习应该属于数据科学的范畴,可笑的是社会上只是吹嘘这个概念,而连基础的概念都很少有人清楚
6、C/C++
C++能做什么呢?貌似什么都能做,又什么都不能做... 但学习C++对了解计算机体系结构还是非常有作用的,其应用范围包括操作系统、驱动开发、黑客技术、反编译软件破解、外挂开发等等,包括Nodjs、Java虚拟机、数据库的底层代码都是用C++来完成,所以如果你立志做一名极客,可能C++还是必须掌握的。但是其比较难,不像其它语言撸几天就能撸个网站跑起来,C++从入门到应用实在是一件挺困难的事。
7、硬件工程师
偏传统行业,研发周期长,没软件行业迭代快。需要的技能包括C/C++语言、汇编、电子电路、滤波器、arm等等。由于产业链条长,迭代慢,缺乏爆发性增长能力,整体收入并没软件工程师高。当然,硬件公司一旦成长起来更容易形成行业垄断力,比如大疆、Intel等等,而且,确实很好玩是不是?
⑸ 我想学反编译,要学汇编语言吗,那有好的教程,给介绍一下
要学汇编语言
有基础建议直接学
没有就先学其他接近底层的语言
如:VC++,Delphi,
还要学Win32编程
⑹ 本人是计算机科学技术专业学生,想问一下学哪一个编程语言较好求大神指教
JAVA多在生活应用中。C语言多在服务器、系统应用中。VB就比较少人用了。还有网页语言。现在用的比较多的是php
在游戏应用中很多java和c语言结合应用的。
破解方面最基础的就是汇编语言了。比如写一些外挂等都一定会用到。反编译等等。
所以不能想比较。要做基础的话,就选c语言。学好了。 在学其他语言就很快了。1、2个月就可以自学会JAVA等
然后在学习汇编。
感觉ok就给个好评采纳吧,尽快采纳可以帮我赚多点分分哦,谢谢。。。。。
⑺ 哪些语言容易被反编译
Java程序编译后的结果是Java Bytecode,而.NET编译后的结果是CIL(Common Intermediate Language),两者都具有下列的特性:
-同为堆栈式(stack-based)指令集。
-同为高阶面向对象机器语言
-和平台无关
-Code Validation
-Symbolic Link
上述任何一点特色,都可以让程序变得更容易反编译,全部五点结合起来更是不得了。所以要反编译Java和.NET可以说是相当容易的。网络上就到处流传着Java的反编译器(decompiler),可以把编译后的档案反推出原始码,
⑻ 请问不容易被反编译的编程语言有哪几种是比较推荐学习的
首先恭喜你选对了行业。不懂编程的人将来估计是寸步难行。IT行业入门门槛儿较低,对于IT专业外的知识储备没有太高要求。适合各专业各领域的学生和在职者加入。薪水高、地位高、没有性别歧视和具体的年龄限制等。
至于具体学什么,这个要看个人的爱好及特长。但总而言之,IT领域未来的发展方向,从实体方面来看一定是智能设备和物联网,从领域来看一定是互联网,未来的网络将会越来越智能,也将会提供大量的就业机会。因此,IT行业的前景是毋庸置疑的,国家信息产业部发布的最新报告显示,我国目前信息安全从业人才缺口高达40万人,每年以20%的速度在增长。国家信息产业部已把软件工程师列为“国家紧缺型人才”的行列。前景好,人才需求广,就业高薪,所以很多大学室会很青睐。希望可以帮到您,谢谢!
⑼ CAD二次开发的未来是哪种语言,我会LISP,可是已经有反编译了,不知道有什么好的语言没有
现在用的VLISP就不是那么好反编译了,不过想接触新语言的话可以学一下C++
⑽ 程序的反编译是否需要 用到 汇编语言, 学习汇编语言之前需要 了解和学习什么,求指教
学习汇编之前应该对操作系统与应用程序之间的关系弄清楚一点,最好是掌握C语言吧,这样对一些专有名词会比较有头绪,反汇编其实也就是读汇编代码。