1
zpxhjs 2013-05-30 13:56:16 +08:00
其实可以考虑自己做一点东西玩玩,做你自己最感兴趣的东西
|
2
undeflife 2013-05-30 14:01:26 +08:00 1
思考spring和struts里有什么是让你用起来舒服的 有哪些不爽的 看看spring 和struts源码 尝试自己造轮子.
|
3
emohacker 2013-05-30 16:15:25 +08:00 1
|
4
undeflife 2013-05-30 16:55:33 +08:00
@emohacker 这是什么逻辑?java的库很丰富,用起来简单,所以java是民工语言?提高水平需要的是锻炼思维,所以我才建议楼主去尝试造轮子,而不是简单粗暴的换一门语言,假如楼主用spring、struts没搞懂http请求是怎么回事,换成rails就能搞懂了?换一个动态类型的语言可以提高你的生产力,但是并不能提高你的编程思维,就算楼主现在去学ruby学python,学完了基础语法之后能干嘛呢?还是要去写代码,找点自己感兴趣能坚持的东西去做 ,这样才能提高.
|
5
ivanlw 2013-05-30 16:59:32 +08:00 via iPhone
个人认为Java 精髓在于Lucene和Hadoop…J2EE除非在超大型的企业应用(参见Amazon,改版后淘宝,改版后Twitter),不然没有优势…
|
7
emohacker 2013-05-30 17:13:15 +08:00
@undeflife 非常赞同,编程的本质是相通的,编程语言的差异也只是语言特性的差异,一通百通,思维很重要。
我对编程能力提高的过程,感触最深的还是去重构自己写过的代码,那个过程收获最大,重构完往往有脱胎换骨的赶脚。 |
9
undeflife 2013-05-30 17:31:10 +08:00 1
|
11
hanf 2013-05-31 08:44:41 +08:00
java不是民工语言,而是很多代码民工用java语言
|
12
hooluupog 2013-05-31 09:22:11 +08:00
java是民工语言?找个民工去淘宝,京东试试?让民工搞搞设计模式和架构之类的东西看看。java最大的优点恰好就是让水平层次各不相同的人都能在一起工作,所以这么普及。
|
13
davepkxxx 2013-05-31 09:37:54 +08:00
互联网行业,JavaEE使用的较少,一般都直接使用Lucene、Hadoop之类。不过一些安全性要求较高的项目,比如电子邮箱、在线支付这种还是经常使用JavaEE的。
但是一旦到了金融、MIS、ERP、OA、电子政务这种系统就是Java大展拳脚的时候,说白了JavaEE的长处在企业级项目。 |
14
raptor 2013-05-31 10:03:37 +08:00
去做Android开发吧……哈哈
|
15
yorkw 2013-05-31 10:08:10 +08:00
相比其他弱类型语言,Java在个人开发领域(WEB方向)确实没有太大优势。离开了企业级架构的Java程序员,想自己做点事情确实比较难。
对于Java程序员, 移动领域是一个不错的切入点,Android的成功从某种程度上说焕发了Java的第二春。使个人开发者把自己的想法变成现实推送到数以亿计的用户面前上变得前所未有的容易。 LZ如果厌倦了企业级应用, 可以在移动行业试试水,先做点自己喜欢的东西,技术成熟后可以试着学习其他平台iOS。移动领域前途光明,大有可为。 |
16
cbc009 2013-05-31 10:09:00 +08:00
应该不是所有java程序员都迷茫。。。。
|
17
lch21 2013-05-31 10:09:47 +08:00
跳槽吧,少年
|
18
halfbloodrock 2013-05-31 10:12:04 +08:00
介个lz是想切实提高自身水平。。。不想再读了忘,忘了读,没有实战。。。这个楼歪成了“论Java优势劣势“ 了 :D
|
19
soli 2013-05-31 10:18:04 +08:00
今年年初 Java 比 C++ 都火吧?
|
20
darkyoung 2013-05-31 10:26:12 +08:00
做Android +1
|
21
seeker 2013-05-31 10:37:13 +08:00 1
童鞋们,说一句话的时候请确保你们知道自己再说什么,比如,“弱类型”。
楼主,我觉得你可以自己做点什么东东出来,我也是,上学的时候有各种习题,现在不习惯了。自己最好找点东西做做,一来练手学以致用,二来吹牛用。 关于java,java很庞大,单单说java咋样咋样我觉得没什么实际意义。建议大家讨论的时候具体到某个具体的问题,或者某方面具体的问题。 如果不是关于java,而是关于职业生涯,俺经验也浅,不足参考。推荐coolshell上面的一些文章: <程序员技术练级攻略> http://coolshell.cn/articles/4990.html <给程序员新手的一些建议> http://coolshell.cn/articles/4976.html |
22
code4craft 2013-05-31 19:42:23 +08:00
自己找个感兴趣的做吧,总会有些提高的,最近半年我自己做了一个项目,收获挺多的。
|
24
emohacker 2013-06-02 01:41:11 +08:00
@jonyare 我木有吐槽java的意思。
只是感慨下外包公司压榨开发者血汗的行为,以及这种行为下导致的环境。 牛叉的人当然不会受环境影响,但是很多初学的同学会在这种缺乏晋升渠道,重复单调的工作环境中迷失。 |
25
emohacker 2013-06-02 02:03:08 +08:00
|
26
davepkxxx 2013-06-02 02:10:07 +08:00 1
弱类型语言Javascript:
var i = 1; i = ""; // 顺利通过编译。 Java: int i = 1; i = ""; // 无法通过编译。 比较特殊的可能就是Scala: var i = 0; // 和 var i : Int = 0; 是一个意思,可以省略声明。 i = ""; // 无法通过编译。 |
27
Ricepig 2013-06-02 02:13:24 +08:00
@emohacker 无论是强类型还是弱类型,表面上都可以达到你说的效果。强类型弱类型的区别主要在于一个变量声明了以后,是否可以改变其类型。
例如,在C#(强类型语言)中,下列语句是合法的: var a=1; var b= "2"; var c=a+b; 仅仅是因为C#提供了var这个语法糖,它会根据后面的初始值来判断这个变量是什么类型。而C#的string类型又重载了加法运算符,所以c=a+b是合法的。但是以下语句是不正确的: var a=1; a = "2"; 而在弱类型的语言中(php,js等),类似上面语句应该是合法的 |
30
Golevka 2013-06-02 02:25:08 +08:00
@Ricepig 你也混淆了静态类型/动态类型和强类型/弱类型的概念. 如果我告诉你python是强类型的语言你大概就囧了吧.
|
31
emohacker 2013-06-02 02:36:17 +08:00
|
32
Ricepig 2013-06-02 02:36:22 +08:00
@Golevka 其实python我一点也不囧。让我囧的是C#,var和dynamic的出现,让我森森怀疑C#到底是不是静态强类型语言。。。
|
33
Ricepig 2013-06-02 02:40:41 +08:00
@Golevka 而且我举的例子,实际上是强弱类型的差别,而不是动态静态的差别吧。因为即使是动态类型(且强类型),运行期确定了其类型后,变量类型就无法再改变了。而弱类型的话就没有这个困扰,这也是我说
var a=1; a = "2"; 可以在弱类型语言里通过,而无法在强类型语言里通过。无论动态语言还是静态语言,上面两句应该都是无法通过的,只要它们是强类型。 |
34
davepkxxx 2013-06-02 02:43:34 +08:00
我发现我的举例不太对,那个更像用来解释动态类型和静态类型的区别,重新换个例子吧。
JavaScript 里,1 == "1" 的结果为 true;而在 Java 里 1 == "1" 无法通过编译。 也就是说强类型不会进行不同类型之间的转换,而弱类型语言会帮你做这些事情。当然这并不是绝对,Java 也会进行一些自动类型转换,比如 1 == 1L 的结果是 true 。 |
38
Golevka 2013-06-02 03:08:34 +08:00
@Ricepig 你已经凌乱了好伐. 至于var类似物其实只不过是做了最最基础的type inference而已. 所以乃最好先去脑补一下Standard ML类似物再去考虑type annotation对于静态类型语言的必要性=w=
|
40
Ricepig 2013-06-02 06:12:46 +08:00
@Golevka 另外,var是最基础的type inference,但是var加上dynamic就是不是了好吗?请自行脑补一下c# 4.0中关于dynamic的部分好吗?
|
41
Ricepig 2013-06-02 06:21:07 +08:00
@Golevka 再另外,在C#中有还有一段很有意思的程序:
var a = 1; a = "2"; // 编译时错误 dynamic b =1; var c = b; // 无错误 b = "A"; // 无错误 c = b; // 无错误 你理解了为什么加上dynamic和var以后,C#越来越不像静态强类型语言了? |
42
Golevka 2013-06-02 07:03:56 +08:00
@Ricepig C#的dynamic成分也是强类型的. 顺便严重怀疑M$的dynamic是不是为了方便C#和别的语言相互乱搞
|
43
seeker 2013-06-02 08:59:56 +08:00
@emohacker 参考wikipedia(http://en.wikipedia.org/wiki/Strong_and_weak_typing)的准确一点。“不需要显示声明变量类型”要么是动态类型,要么有类型推导(Type inference)
|