免责声明:这是一篇可能引起冲突的文章。为了祖国的和谐和人民的福祉,请理性讨论。同时,本文也只是给一些刚接触行业的朋友一些比较中肯的分析和建议。尽管有很强的个人风格,但我仍然尝试用事实和代码说话。不要拿自己的。牛逼的经历是来伪装的,当然,如果你非要来撕我,哥们,我陪你。另外,由于文章以我自己的机构蜗牛学院做的一些事情为例,如果你认为这是软文广告,请到此为止。强哥的广告都是硬的,不是软的。好吧,让我们进入正题。
我先问你一个问题,为什么中国人很容易用刀叉,而外国人用筷子,这应该是他们在中国吃的最痛苦的东西。为什么会这样?
其实原因很简单。当我们学会了技术难度较高的技能后,很容易降级学习难度较低的技能,反之则不然。
这个原则也适用于我们的研究。强哥有丰富的Java和Java使用经验。当然,Java 有更多的应用经验和更多的代码。正是因为我们丰富的Java经验,当蜗牛学院的软件测试方向需要给学生教授一门课程时,我们所有的讲师都会被分配学习任务,完成教案、教材和案例的编写。我们会发现它非常易于使用。基本上,解决问题的方式、方法、算法、思路,所有的编程语言都是一样的。当我们去学习一门新的编程语言时,会容易很多,只要注意与我们熟悉的编程语言在语法和用法上的差异即可。
那么问题来了?
蜗牛学院也教,那么值得学还是Java?
不得不说三点,但很少有人从这个角度来分析:
一个不懂 2-3 种编程语言,或者很少使用 Java 的人来告诉你 Java 好不好,这是公然不负责任的。如果这个人使用它并且有点ok,他会告诉你你好,如果这个人使用Java,他会告诉你Java很好。如果有一个键盘侠从来没有用过两种语言,他会告诉你语言是一样的,所以不要混淆。每个人似乎都说得好,有道理,所以你别无选择。强哥精通8种以上的编程语言,感觉有点资格说这两种编程语言。虽然,从我个人的角度来看,在我看来,只有两种编程语言,第一种是 Java/C,第二种是其他。但我不能用这种极端的方式误导你。我们必须了解Java和各自的定位。Java源于C和C++的技术体系。它于 1995 年推出,定位于为专业程序员设计大型复杂分布式应用程序。但它于 1991 年推出(早于 Java),主要面向系统管理、科学研究、教育和非程序员群体。每个人都必须了解现实。在这个世界上,不仅程序员需要写程序,还有很多群体需要写程序。比如蜗牛学院在这方面的定位非常明确:Java开发全栈方向的学生学习Java编程和编程,就业班的软件测试学生学习(因为他们不是专业的程序员),和软件测试下属 自动化测试开发高级研讨会同时是Java/两个方向。那么你觉得哪一个更好呢?他比 Java 早 4 年出生,但为什么几乎是在 2010 年之后才逐渐在中国流行起来?原因很简单,因为我们都太现实了。由于大数据的盛行,由于自动化测试对人才的需求,以及一些互联网基础应用系统的开发,企业加大了人才的招聘力度(当然与Java相比还是有很大差距的) ),由于有一种编程语言,感觉很简单,可以赚很多钱。它是人类的福气,所以流行起来。这与近年来非常流行的Web前端开发非常相似。实际上,大多数人没有技术能力,但他们得到了不错的工资。这不是个人原因,公司也很浮躁。就这样。假火一泄,谁能撑到最后?请自行决定。
不知道你从哪里得到一些“误导”,认为它很简单,Java 很难,所谓的“生命太短,我用它”等等。一方面,确实上手比较快,仅此而已。在解决复杂问题时,没有人认为难点在于使用哪种编程语言,而在于解决这个具体问题的算法思想。你必须清楚这个观点。另一方面,由于近几年的火爆,不排除有人故意散布一些言论误导大家。这就像这么多年来python简单小案例,有些人一直认为软件测试学起来比较容易。也有不少人反映是通过软件测试进入这个行业的,并选择了一个他们认为不难进入的领域。但是,强哥发现,3、5年过去了,很多测试人员最焦虑的就是自己的技术还不够深,在企业里的竞争力越来越小。所以最后还是要硬着头皮去研究深入的测试技术,不管是编程、网络、数据库、协议,还是自动化测试、性能测试等等。但是过程很痛苦,就像我说的,这个世界上99%的人会选择容易的路,因为懒惰,因为恐惧。而成功属于那1%。这句话也适用于编程语言或技术技能的训练。很多测试人员最焦虑的就是自己的技能还不够深,在企业中的竞争力越来越差。所以最后还是要硬着头皮去研究深入的测试技术,不管是编程、网络、数据库、协议,还是自动化测试、性能测试等等。但是过程很痛苦,就像我说的,这个世界上99%的人会选择容易的路,因为懒惰,因为恐惧。而成功属于那1%。这句话也适用于编程语言或技术技能的训练。很多测试人员最焦虑的就是自己的技能还不够深,在企业中的竞争力越来越差。所以最后还是要硬着头皮去研究深入的测试技术,不管是编程、网络、数据库、协议,还是自动化测试、性能测试等等。但是过程很痛苦,就像我说的,这个世界上99%的人会选择容易的路,因为懒惰,因为恐惧。而成功属于那1%。这句话也适用于编程语言或技术技能的训练。或者自动化测试、性能测试等等。但是过程很痛苦,就像我说的,这个世界上99%的人会选择容易的路,因为懒惰,因为恐惧。而成功属于那1%。这句话也适用于编程语言或技术技能的训练。或者自动化测试、性能测试等等。但是过程很痛苦,就像我说的,这个世界上99%的人会选择容易的路,因为懒惰,因为恐惧。而成功属于那1%。这句话也适用于编程语言或技术技能的训练。
其实,如果你有实际的编程经验,我们不妨好好想想,我们在开发一个系统的时候,会用到哪些技术呢?
需求分析、测试、客户、老板的坏事我们就不说了。再来看看纯技术层面的一些基本需求:数据库、Linux命令、网络协议、接口设计、算法思路、框架、bug修复、编程、前端交互。你了解我,用不同的编程语言编写程序只是你在开发过程中需要掌握的众多技能之一。其他的天外神坛,它与您使用哪种编程语言无关。如果你不能理解这一点,觉得强哥在愚弄你,那就请你自己做吧。或者从另一个角度来说,如果你知道一门编程语言而不是一个完整的技术体系,你就可以成为技术大师。我认为它可能只在你的村庄有效,因为你是唯一一个理解它的人。
当然,我们上面讨论的纯粹是基于技术定位。你也许可以反驳我说每个做测试的人都必须会编程,并且什么都做不了?
当然不是这样。任何领域都有大神,丰富的经验可以解决很多问题。不过那是很久以前的事了,我们现在说的你还在Java苦苦挣扎,而毫无疑问,此时的你还是个菜鸟,连门都算不上。强哥劝大家,不要因为简单就去做。无论是学习一门编程语言还是别的什么,这都是最可怕的起点,它会毁了你的未来。
下面我将列出一段我使用 Java 编写的用于发送 HTTP 协议的代码。这段代码包含在强哥今年年底发布的自动化测试开发进阶教程中。全书使用Java进行代码演示。明年,我将有一本几乎相同但使用代码实现的书。原因很简单。Java能解决的基本问题也能解决。当然,Java也可以解决。但是当涉及到繁重的工作时,Java 更加成熟。
实现系统需求提案新特性的Java代码:
// 实现需求提案的新增
public void doAdd() {
// 先发送POST请求实现登录
String postUrl1 = "http://localhost/agileone/index.php/common/login";
String postData1 = "username=admin&password=admin&savelogin=true";
String resp1 = hr.sendPost(postUrl1, postData1);
System.out.println(resp1);
// 对sendPost()方法进行了额外的封装,一次封装,处处使用
// 再发送POST请求完成新增
String postUrl2 = "http://localhost/agileone/index.php/proposal/add";
String postData2 = "type=Enhancement&importance=Medium&"
+ "headline=&"
+ "content=这是用于Java代码测试的内容-10009&processresult=";
String resp2 = hr.sendPost(postUrl2, postData2);
System.out.println(resp2);
}
让我们看一下实现相同功能的代码:
# 导入urllib和http库
import urllib
import http.cookiejar
# 利用cookiejar自动管理整个过程中的Cookie
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
# 利用urllib构造POST请求并处理登录
logindata = { "username" : 'admin', "password": 'admin', "savelogin" : "true" }
data_encoded = urllib.parse.urlencode(logindata).encode('utf-8')
login = opener.open("http://localhost/agileone/index.php/common/login/", data_encoded)
print(login.read())
# 发送Post请求提交新增需求提案
proposaldata = {"type":"Requirement", "importance":"medium",
"headline":"Headline from Python - 10010",
"content":"Content from Python - 10010", "scope":"1",
"processresult":""}
data_encoded = urllib.parse.urlencode(proposaldata).encode('utf-8')
proposal = opener.open("http://localhost/agileone/index.php/proposal/add", data_encoded)
print(proposal.read())
相信大家很难分清所谓的易与难。因为代码非常相似,所以在很多场景中都会发生这种情况,在解决许多问题时也是如此。其实很多人之所以标榜易学,是因为我们抛开一些可能的商业目的或者社会心理原因(需要说商业目的吗,比如最简单的例子,蜗牛学院专门培训,当然我会忽略它)我会说服你它是最好的编程语言。那里没人。Java都是垃圾和过时的。睁眼瞎胡说八道的人还少吗?因为你懒得去验证真相。社会心理是我自己做的,怎么说我做的技术很低,我自己做Java,Java 必须是最好的)。让我们从事实开始。原因很简单,因为我们在使用的时候可能像傻子一样,直接调用别人给我们写的代码接口,而Java的很多处理都比较,我们写的代码稍微多一些。但是只要封装好了,代码就很难说谁更简单了。而这个封装过程其实是编程中最重要的部分。如果这部分我们都不愿意参与,也不想知道实现原理,想一想,怎样才能成长为优秀的程序员,天朝呢?让那些努力工作的人感觉很好。直接调用别人给我们写的代码接口,而Java的很多处理都比较,我们写的代码稍微多一些。但是只要封装好了,代码就很难说谁更简单了。而这个封装过程其实是编程中最重要的部分。如果这部分我们都不愿意参与,也不想知道实现原理,想一想,怎样才能成长为优秀的程序员,天朝呢?让那些努力工作的人感觉很好。直接调用别人给我们写的代码接口,而Java的很多处理都比较,我们写的代码稍微多一些。但是只要封装好了,代码就很难说谁更简单了。而这个封装过程其实是编程中最重要的部分。如果这部分我们都不愿意参与,也不想知道实现原理,想一想,怎样才能成长为优秀的程序员,天朝呢?让那些努力工作的人感觉很好。如果这部分我们都不愿意参与,也不想知道实现原理,想一想,怎样才能成长为优秀的程序员python简单小案例,天朝呢?让那些努力工作的人感觉很好。如果这部分我们都不愿意参与,也不想知道实现原理,想一想,怎样才能成长为优秀的程序员,天朝呢?让那些努力工作的人感觉很好。
这就像 C 语言。因为C语言更原生、更底层,几乎没有提供很多打包的代码接口。很多问题的解决都需要我们自己编写代码,所以这也是很多人认为C语言难的原因。道理是一样的。然而,优秀的人更喜欢自己创造。与C语言相比,Java和C#为我们提供了丰富得多的代码接口,实际上我们使用起来也更加方便。结论是,面对C语言,其他高级语言都太简单了。是的,因为它封装了太多可以直接使用的类库和接口。因此,要成长为高级程序员,不能只写简单的应用程序。比如Java的源代码一定要学。我们必须知道这些封装的代码接口的实现细节。否则,与使用打包的东西有什么本质区别?
所以请不要再打扰了。强哥的经验,如果把Java作为人生第一门熟记的语言,那么基本可以在很短的时间内学会C++、PHP、R、C#、-C、Swift。, Go(是的,每一种语言都可以在很短的时间内学会,只是为了解决具体的问题和一些坑需要积累一些实践经验)。但另一方面,如果你把它作为你的第一语言,问题又回到了外国人对筷子的使用上,答案是不言而喻的。
所以,如果你以后想成为专业的程序员,建议先学Java(或者C#,原理上很相似,但不是真的,C/C++也可以),即为程序员专属语言,是有门槛的,所以可以建立自己的竞争力。如果你只是想玩玩,感受一下,或者只是把编程语言作为工作的工具,那么它是一个不错的选择。这是学习的建议。如果是企业中的真实项目,那就不用担心了。我们会了解项目需要什么,我们不需要那么多理由。做事就是真理。
用锤子好还是用锤子好?
Java好还是不好?
为什么一定要选一个?
浮躁,只是个吃东西的工具,如果你是技术型的,把它们都吃完不就完了吗?你再也不会被纠缠了。这是一个技术人员应该有的状态。是不是?
注:希望在IT行业不断突破,提升自我的朋友,不管你感觉好不好,都欢迎加入群。 |