V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiluo
V2EX  ›  Python

Java Web出身,想学python,求指点

  •  
  •   xiluo · 2011-04-04 16:07:24 +08:00 · 8012 次点击
    这是一个创建于 4778 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先从Django着手,如何?
    28 条回复    1970-01-01 08:00:00 +08:00
    fanzeyi
        1
    fanzeyi  
       2011-04-04 16:12:39 +08:00
    还是从最基本的开始吧…………
    xiluo
        2
    xiluo  
    OP
       2011-04-04 16:23:00 +08:00
    @fanzeyi
    Django真的需要很好的Python基础吗?
    roamlog
        3
    roamlog  
       2011-04-04 17:31:14 +08:00 via iPhone
    django 是 python 的框架,当然要先学 python 了,不然就是空中楼阁了
    d_yang
        4
    d_yang  
       2011-04-04 17:32:51 +08:00
    我觉得没问题。
    上来就用(一点点基础),不会就查资料。
    看完基础再看django,看完django再动手写, 胡子都白了。
    fanzeyi
        5
    fanzeyi  
       2011-04-04 17:34:40 +08:00
    @xiluo 这个关系就跟 走路 与 跑步的关系一样
    Mianco
        6
    Mianco  
       2011-04-04 18:17:48 +08:00 via iPad
    个人觉得有经验的程序员会上手很快。
    keakon
        7
    keakon  
       2011-04-04 18:29:17 +08:00
    只想说Python学2个小时就够你实现一般应用了,学Django可远不止20个小时。不知道楼主为何这么浮躁…

    如果Django是个好东西,那可以理解;问题是它确实很一般,你就算很精通它了,对你的Python水平也没有什么提高,或许还比不上学了2个小时Python的初学者。

    这也不是什么走路和跑步的关系,因为2者的目的都不一样。
    keenturbo
        8
    keenturbo  
       2011-04-04 19:22:57 +08:00
    想学就静下心来,其实自己清楚步骤应该怎样别犹豫。
    xiluo
        9
    xiluo  
    OP
       2011-04-04 23:02:24 +08:00
    @keakon,@fanzeyi,@Mianco,@roamlog,@d_yang,@keenturbo
    谢谢大家,说的都有道理。
    今天看了一天的Python,觉得跟Java之类的也区别不是太明显。
    把youtube上的一个Python Programming Tutorial 整个45集都看完了,每集有5,6分钟的样子,收获不小。

    我主要是想开发个应用,数据库是Postgresql,12张表,也不复杂,相信用Django开发起来应该挺快的。

    V2EX果然是新型社区,这里的回帖质量都很高啊。
    Mianco
        10
    Mianco  
       2011-04-04 23:57:36 +08:00
    @xiluo 7楼是python高手。
    darcy
        11
    darcy  
       2011-04-05 00:54:45 +08:00
    @xiluo 看完Python基本语法就直接上实例吧,跟着应用走,加上已有的编程经验,上手很快的。语遇到不懂的地方再查资料。等熟悉一段时间后再回头去看基础书,理解更透彻。
    raptium
        12
    raptium  
       2011-04-05 02:10:54 +08:00 via iPhone
    如果没记错的话 我就是从 Django 开始学 Python 的
    虽不好说最后学成怎样 但是 python 现在已经是我用得最多的语言
    我觉得从什么开始无所谓 有时候自己觉得有趣也很重要 在我看来 Django 的 tutorial 就比一般的 python 教材有趣多了
    wenbinwu
        13
    wenbinwu  
       2011-04-05 02:33:08 +08:00
    先看看语法,然后看看django没问题
    我是想做GAE的应用才学习python的,之前有所了解,但是不精通
    nhxyj111
        14
    nhxyj111  
       2011-04-06 16:26:55 +08:00
    我也是javaweb,想转python
    xiluo
        15
    xiluo  
    OP
       2011-04-06 23:05:30 +08:00
    @nhxyj111
    呵呵,有前途
    jeeson
        16
    jeeson  
       2011-04-07 22:10:40 +08:00
    @wenbinwu
    Google App Engine也支持Java.

    我没写过Python代码, 只是移植Python代码到Java过, 个人觉得对于传统程序员(C/Java), Java更好
    wenbinwu
        17
    wenbinwu  
       2011-04-07 22:26:11 +08:00
    @jeeson GAE刚出来的时候不支持java的,后来好久才支持的
    jeeson
        18
    jeeson  
       2011-04-07 22:33:27 +08:00
    @wenbinwu "GAE刚出来的时候不支持java的,后来好久才支持的" 因此对Java有意见吗? :)

    其实GAE 下 Java的主要问题是 DataStore 接口很差, 效率也较低, 不如Python版本.

    但是现在有第三方的开源组件后, 已经非常方便了

    我不是说学 Python 不好, 只是觉得别总是花时间在学编程语言上, 每门都没吃透 :)
    xiluo
        19
    xiluo  
    OP
       2011-04-07 22:40:52 +08:00
    @jeeson
    我不是说学 Python 不好, 只是觉得别总是花时间在学编程语言上, 每门都没吃透 :)

    你说的一点都对(许三多)

    Android的虚拟机就是一个从JAVA1.1就开始用的一个大牛。所以专心吃透是没错的。
    qichangxing
        20
    qichangxing  
       2011-04-07 22:45:42 +08:00
    "Django lets you write web apps in Django. TurboGears lets you write web apps in TurboGears. Web.py lets you write web apps in Python." http://webpy.org/
    xiluo
        21
    xiluo  
    OP
       2011-04-07 23:44:35 +08:00
    @qichangxing
    really?
    keakon
        22
    keakon  
       2011-04-08 00:11:48 +08:00
    @jeeson Java在GAE上只能算2等公民,很多Python已有的特性,Java要等半年、1年甚至永远不会实现。而且Python的datastore api是最接近实际情况的,Java就算是低级api也只能看到个表象,触摸不到内在的,想要优化都只能捉襟见肘。
    jeeson
        23
    jeeson  
       2011-04-08 00:29:43 +08:00
    @keakon Java 不是我长项, 我选择它只是因为接近C++, 更习惯些. Python更是不了解, 所以没法比较

    但是, 你说的 "Java在GAE上只能算2等公民", 我不同意, 不过我没有特别在意过新特性对比, 所以也不好反驳

    关于 datastore api , 目前为止, 并没有真正权威的比较哪个性能更好, Java底层接口的第三方封装已经极大的改进性能.

    另外, 意外的是, Java更快(执行速度)!
    keakon
        24
    keakon  
       2011-04-08 01:48:33 +08:00
    @jeeson 我想说的是,如果你用Java,你永远不可能知道datastore api真正是怎么样的。Python可以看到所有的细节,包括与服务器打交道时传输的字符串信息;同时它又提供了远强于Java的表达能力,不会像Java定义模型时那么痛苦。

    从一开始进行数据库设计时,你就无法为其做出最佳的设计,因为Java把这些底层的细节封装掉了。并不是说Java就不能提供给你这些细节,而是它的表达能力太差,你得花费我不敢想象的精力去实现,至少Google的员工都没做到。因为你不了解Python,所以我没法给你形象地表达它们之间的差别。如果你肯花费时间,钻得比文档更深(阅读相关的文章和SDK源码,看Google I/O和Google员工的解释),你就会知道它们之间决定性的差异。

    我说Java是2等公民也不是瞎说,从GAE/Java诞生开始,每个版本的变化我都有关注。最明显的一个例子就是最近的SDK 1.4.3,Java新加入的Deferred库是09年时Python SDK就已经包含了的。然后datastore实际上早就有异步API了,去年还增加了一个纤程的实现,然而Java由于不能多线程,我想最多在未来数月以回调函数的方式来实现吧。好吧,我又人为地进行简化了,Java的函数还不好传递,得实现一个类然后扔过去。
    jeeson
        25
    jeeson  
       2011-04-08 11:01:54 +08:00
    @keakon GAE/Java版 datastore API 支持异步, 不是回调, 当然, 可能比Python晚许久支持的

    http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Asynchronous_Calls

    The GAE's low-level datastore API supports parallel asynchronous operations. GAE's model of asynchrony does not follow Javascript's "pass in a callback function" model; rather, when you make an asynchronous call, you get back a reference to the pending operation. You can create multiple references which will execute in parallel, however, any request to fetch a concrete result will block until the result is available.

    能像你这样深入到核心/源码的毕竟少数, 这对大部分开发人员来说未必是件快乐的事情 :)

    对我来说只是工具而已, 暂停吧.
    keakon
        26
    keakon  
       2011-04-08 11:32:04 +08:00 via iPhone
    这个项目不是google维护的,而是开发者不爽google的实现去自创的,连google自己的员工在论坛里都要开发者去使用这个库,而不是自带的。我只能说这个例子更加证明了java是2等公民,因为google的员工精力真的没怎么放在上面。gae team是在旧金山,人数并不多,写博客的很少,但写出来的基本都是python相关的。

    如果你有关注过sdk的发展,java sdk在某些版本发布时甚至连文档都来不及更新,更别提例子了。

    实现就算不能深入源码,至少也要掌握原理。做数据库设计的如果只知道sql,你能期待他做出什么设计?
    alsotang
        27
    alsotang  
       2011-09-10 23:13:31 +08:00
    @keakon java是gae的二等公民是非常显而易见而且已经经过各种讨论的事情了嘛。。。
    darasion
        28
    darasion  
       2011-09-10 23:22:21 +08:00
    忘记java. 你就学好python了. 反过来也是.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2451 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:32 · PVG 22:32 · LAX 07:32 · JFK 10:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.