V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zaishanfeng2014
V2EX  ›  问与答

PHP、Python 如何转 java,试了几次都失败了,郁闷

  •  
  •   zaishanfeng2014 · 2014-10-03 14:25:58 +08:00 · 6786 次点击
    这是一个创建于 3736 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想玩玩安卓。但是看到java那长的一坨一坨的变量名函数名参数名就想死,怎么能克服心理障碍呢?
    49 条回复    2014-10-04 09:36:12 +08:00
    loveyu
        1
    loveyu  
       2014-10-03 14:33:27 +08:00
    从基础慢慢来
    mthli
        2
    mthli  
       2014-10-03 14:51:55 +08:00 via Android
    从画界面开始。其实安卓没啥难得。
    你觉得函数名啥的麻烦的话,用IDEA,够爽。我写Python的时候都没这么爽过。
    zaishanfeng2014
        3
    zaishanfeng2014  
    OP
       2014-10-03 14:55:32 +08:00
    @mthli 总觉得java就是把人思维固话,死板的很,不适应,有心理障碍
    ovear
        4
    ovear  
       2014-10-03 15:02:26 +08:00
    @zaishanfeng2014 那是你没习惯小驼峰,要去看objective-c。。那你不得疯掉。。比java更长。。
    java如果严格按照规范来写,只要有一点点编程基础的人,都看得懂
    而php python这种规范约束力不是很大的
    随便换个人来看,就要把别人看吐血
    变量名 abcde。。
    SquirrelMAN
        5
    SquirrelMAN  
       2014-10-03 15:04:13 +08:00
    try Swift
    mthli
        6
    mthli  
       2014-10-03 15:05:18 +08:00 via Android
    @mthli 不是呀,思维固化不能用语言这种东西来说明吧。我周围的同学有从Python入门编程的,到现在一直认为其他语言太难写了,麻烦,所以从来不用其他语言。个人认为其Python水平也挺渣。
    勇于尝试新事物才是防止思维固化的根本。
    mthli
        7
    mthli  
       2014-10-03 15:06:26 +08:00 via Android
    @ovear 是的,其实我本身挺讨厌动态语言的这种性质。老实说写到后面自己脑袋都抽抽。
    Automan
        8
    Automan  
       2014-10-03 15:06:56 +08:00
    我觉得越长越好啊。。。现在 PHP也是这个趋势
    typcn
        9
    typcn  
       2014-10-03 15:08:54 +08:00
    @Automan 为什么会是越长越好。。。 不应该是 用最短的名称最清晰的表达含义么
    Automan
        10
    Automan  
       2014-10-03 15:19:27 +08:00
    @typcn 我是喜欢读起来越符合自然语言越好,像OC 那样就很舒服,反正有 IDE 在...敲起来长短不是问题啊
    typcn
        11
    typcn  
       2014-10-03 15:22:35 +08:00
    @Automan vim or 记事本党哭了
    ooh
        12
    ooh  
       2014-10-03 15:24:00 +08:00
    你失败几次,我已经三次。
    Automan
        13
    Automan  
       2014-10-03 15:24:03 +08:00
    @typcn 记事本下不管用啥变量我都会哭
    zaishanfeng2014
        14
    zaishanfeng2014  
    OP
       2014-10-03 15:25:31 +08:00
    The Zen of Python
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!
    ibigbug
        15
    ibigbug  
       2014-10-03 15:26:38 +08:00
    用 IDE 吧。真的比写 Py 爽,回车那一下。
    kevinroot
        16
    kevinroot  
       2014-10-03 15:28:24 +08:00 via iPhone
    直接来了个项目就上了,不过旁边有大神指导
    jyootai
        17
    jyootai  
       2014-10-03 16:00:24 +08:00
    别转了,玩精
    oott123
        18
    oott123  
       2014-10-03 16:30:01 +08:00 via Android
    我失败三次了。
    目前正在第四次尝试中…
    zaishanfeng2014
        19
    zaishanfeng2014  
    OP
       2014-10-03 16:51:31 +08:00
    @oott123 看来我不是一个人额
    skybr
        20
    skybr  
       2014-10-03 16:55:03 +08:00
    试试直接转scala
    zaishanfeng2014
        21
    zaishanfeng2014  
    OP
       2014-10-03 16:55:49 +08:00
    @skybr 我主要为了玩安卓,scala不好弄
    Automan
        22
    Automan  
       2014-10-03 16:58:50 +08:00
    LZ 试试用 Jetbrains 的 IDE 吧,马上就有感觉了
    skybr
        23
    skybr  
       2014-10-03 17:00:13 +08:00
    @zaishanfeng2014 以前拿eclipse开发时装了scala ide插件是可以写的, 就是需要打包scala的部分jar, apk偏大一点, 不过比起titanium(打包v8版)或者kivy还算可以接受.
    zaishanfeng2014
        25
    zaishanfeng2014  
    OP
       2014-10-03 17:26:03 +08:00
    @txlty
    @skybr kivy用过,打包太大,而且启动很慢。运行起来倒是不卡
    zaishanfeng2014
        26
    zaishanfeng2014  
    OP
       2014-10-03 17:27:31 +08:00
    @skybr scala毕竟用来写安卓的少,遇到什么问题也不好解决,不懂java的话scala也不好玩的
    lygmqkl
        27
    lygmqkl  
       2014-10-03 17:30:40 +08:00
    我写PHP都用IDE好多年了。。。。。没有代码提示 怎么写。。。
    Actrace
        28
    Actrace  
       2014-10-03 17:42:41 +08:00
    讨论OC,讨论python。。
    代码好不好读,不是语言的问题。
    看你想做什么事情。
    就我个人看来,基本上,PHP可以写大部分的程序了,当然,有些语言更适合处理某些具体问题。
    PHP也是针对特定场景设计的。
    你要克服的不是这些繁枝末节,而是找一个目标,现在你现在可能还不知道应该做什么,准备做什么,如何去做。搞清楚这些,上面的问题都不是问题。
    zaishanfeng2014
        29
    zaishanfeng2014  
    OP
       2014-10-03 17:44:44 +08:00
    @lygmqkl 我写php python都不要提示的,ps:我用pycharm
    konakona
        30
    konakona  
       2014-10-03 17:57:22 +08:00
    完全不觉得有问题,JAVA虽然很恶心(我也是从PHP转过去的,从弱类型语言转去看这么麻烦的高级语言,多少心里会有抵触,但这抵触不会影响我去学习JAVA优良的一面),但是它身上有一些特性和品质非常好,这也正是PHP5至6一直在参考和吸纳的一些地方。

    我这么说吧,光学PHP,一辈子就只是个网页码农。

    学点JAVA OR C,会让你对编程界有更深刻的了解,对技术和开发思维有更高的领悟境界。

    多学、多看 = 开阔眼界。
    evlos
        31
    evlos  
       2014-10-03 18:22:40 +08:00 via Android
    通常长一点的变量名能比较具体得表达意思吧,我以前帮同学改一个 Python 程序,里面的变量都是 a b c d x y z x1 y1 z1 k min(在需求中,可以是很多东西的 min 值啊)都快改哭了。。。所以现在经常建议人写长点,至少比看不懂的好啊。。。
    zaishanfeng2014
        32
    zaishanfeng2014  
    OP
       2014-10-03 19:01:39 +08:00
    @konakona java是有很多工程上的优点,那么多java码农,没见几个眼界广阔的,都在研究什么看起来很大很牛逼的handoop之类的,其实搞了老久也就是会调调api,知道个原理罢了,java不适合单兵作战,只能做个螺丝钉。真要做个好猿,linux c 编程 才是正途,能hack kernel,对操作系统了如指掌,思路广阔,那样的话,看什么php python就跟玩一样,上手一门语言可以做到拿来就用
    zaishanfeng2014
        33
    zaishanfeng2014  
    OP
       2014-10-03 19:05:12 +08:00
    给个协议、标准,能用代码实现,各种网络协议,各种异步协议、并发模式,能自己实现,那才牛B
    ovear
        34
    ovear  
       2014-10-03 19:24:23 +08:00
    @zaishanfeng2014 如果lz是这么个态度的话,劝你还是玩你的php去。java你都没用过,就总结出java的特点了?还有 网络协议的实现有什么难的,重点是有必要么?有轮子不用,你非得自己造一个,不是蛋疼是什么。
    不要没事就在那大放阙词,信口胡说
    zaishanfeng2014
        35
    zaishanfeng2014  
    OP
       2014-10-03 19:33:03 +08:00
    @ovear 我是没用过java,可我接触的java程序员多了去了,这是总结,懂吗
    ovear
        36
    ovear  
       2014-10-03 19:35:00 +08:00
    @zaishanfeng2014 那说明你接触的等级非常之低,无意中你有暴露了你的等级。
    我懒得回复了,你想这么认为我也没办法,继续你的php神论吧
    u can u up ,no can no bb
    zaishanfeng2014
        37
    zaishanfeng2014  
    OP
       2014-10-03 19:38:38 +08:00
    @ovear 谁让你回了,好想你等级很高似的,还实现个网络协议简单,你以为你是在做作业吗?笑死了
    ovear
        38
    ovear  
       2014-10-03 19:48:02 +08:00
    @zaishanfeng2014 我等级不高,但是可以确定的是,你等级很低噢,这可是你自己说的。
    你接触到的人都是做这种事情的
    我实现的协议还真不少,websocket的draft我就实现了五六个。
    另外不好意思噢,我很久以前就是搞逆向协议的,这点还真的不知道比你高到那里去
    何必这样自取其辱呢
    liuchang0812
        39
    liuchang0812  
       2014-10-03 19:50:47 +08:00
    hadoop表示躺枪。。(hadoop有调api一说吗
    zaishanfeng2014
        40
    zaishanfeng2014  
    OP
       2014-10-03 19:52:30 +08:00
    @ovear 呵呵,很有优越感是吧?就你搞的那点东西,敢拿出来开源让人用吗?很多本科生都可以实现tcp协议栈,那是作业,懂吗?
    ovear
        41
    ovear  
       2014-10-03 19:55:47 +08:00
    @zaishanfeng2014 我可没有优越感喔,是你自己自卑吧,啧啧啧。实现个协议我从来没说很难,是你自己在说吧,前后话语都不一致,没气糊涂吧,真是搞笑啊。
    draft都写的清清楚楚了,每一步怎么做,这难道还不简单么?笑死我了
    眼界放开点吧
    incompatible
        42
    incompatible  
       2014-10-03 20:14:55 +08:00
    @zaishanfeng2014
    @konakona 说的没有错啊 php本身就是为了开发网页而生,不去接触一下其他东西,只能当一辈子网页码农

    反观java,你提到的hadoop,以及zookeeper、lucene和在它基础上衍生的elasticsearch,这些东西都是java领域对工业界的贡献。这也正是java码农眼界会比pho码农眼界开阔的原因。

    至于你说“真要做个好猿,linux c 编程 才是正途,能hack kernel,对操作系统了如指掌,思路广阔”,这纯粹是抬杠。 linux kernel只是工业界的一个领域而已;操作系统是一切的基础,这并不代表你熟悉了操作系统就对上层的技术和应用游刃有余

    假设你对c语言无比熟练、对操作系统了如指掌,请问你知道什么是“事务的隔离级别”吗?知道什么是“面向对象”吗?知道什么是“CAP theorem”吗?
    zaishanfeng2014
        43
    zaishanfeng2014  
    OP
       2014-10-03 20:22:10 +08:00
    @incompatible 你说的有道理,确实要学的东西很多很多。java只是工具,我只是觉得这个工具用起来不顺手,但是又不得不用。
    ccbikai
        44
    ccbikai  
       2014-10-03 20:34:39 +08:00
    好像吵起来了,变成了 XXX 是最好的语言…………

    你们直接晒 编程语言,工资,工作时间 就行了
    incompatible
        45
    incompatible  
       2014-10-03 20:39:52 +08:00
    @zaishanfeng2014 我搞linux c出身、后来用了半年C#,后来至今用了4年java,目前在业余学习groovy和python
    下面这篇文章可能列举了一些java中会令你不爽(且需要做好心里准备)的地方
    http://pythonconquerstheuniverse.wordpress.com/2009/10/03/python-java-a-side-by-side-comparison/

    但就我个人的体会而言,除去以上文章中的部分,我对java还有几点不爽,供参考(做好心理准备):
    1. primitive type的auto boxing根本就是个烂坑,很容易就会NullPointerExcreptoion。我现在只用Integer、Long,不用int、long等类型
    2. checked exception(就是方法名称中的throws XXXException)毫无必要。多数时候大家都是catch住再往外throw。其实只要在前后端交互的边界做好异常处理就行了
    3. java是一门比较重oop的语言。一个if() else if() else if() else if()这样的逻辑,富有经验的java码农通常会写成一个接口、若干实现类和一个工厂。在做大工程时这很有必要,但是有时候用java做个小东西,总觉得是在用牛刀杀鸡
    4. 对于一门强类型语言来说,泛型擦除就是个笑话。


    心理上克服了以上问题,入门java应该没问题了
    hcymk2
        46
    hcymk2  
       2014-10-03 20:43:43 +08:00
    Execution in the Kingdom of Nouns
    不爽不要玩。
    10iii
        47
    10iii  
       2014-10-03 21:15:06 +08:00
    说了多少遍,语言只是工具。
    快速学习是程序员的一项基本能力,应该平时往你的工具箱里多装几件工具。或者是有需求的话,短时间内就可以上手。
    能做到依据项目需要而选择语言,那么限制你的就不再是语言,你的天地才更大一些。
    expkzb
        48
    expkzb  
       2014-10-04 00:00:06 +08:00 via iPhone
    请查阅 程序员如何转行卖水果
    wecoders
        49
    wecoders  
       2014-10-04 09:36:12 +08:00
    python java随便撸
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3549 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:43 · PVG 12:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.