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
myrual
V2EX  ›  Python

python算偏门的语言么?

  •  
  •   myrual ·
    myrual · 2012-05-09 22:20:42 +08:00 · 5910 次点击
    这是一个创建于 4341 天前的主题,其中的信息可能已经有所发展或是发生改变。
    只是抱怨一下而已。
    用twisted实现了一个UDP网络通信的服务器程序,目前看暂时工作稳定,而且代码逻辑相对不复杂。
    但是部门领导担心项目结束后无人维护,因为目前团队里面没人会python。希望能写一个php版本的,或者c语言版本的,或者asp版本的。
    顺便问一个问题,搞UDP编程,能用php或者asp完成么?




    以下是简单的抱怨:
    话说python确实不是非常流行的语言,毕竟学校里面没人教,但是至少比ruby go nodejs 要普及的多吧。我还没说erlang呢。
    现在的公司水平确实不行,网站服务器是amazon的large windows主机,因为IT部门只会.net。
    当需要处理某个终端的上发http get 请求的时候,就是因为这个请求是 xxx.asp的形式的,就某人写了一个c语言的程序来截取tcp请求,然后转发给apache,然后用php处理。
    但是和网页无关,只是做一些逻辑处理和http get 以及数据库操作。
    这个小程序在用的人数多的时候cpu占用率直奔99% , 后来我用crontab做了定时重启,算是暂时解决了占用率高的问题。但是似乎解决根本问题的时间根本没有排进日程。
    38 条回复    1970-01-01 08:00:00 +08:00
    notedit
        1
    notedit  
       2012-05-09 22:25:49 +08:00
    如果python是偏门语言的话 那些玩go 玩erlang 的怎么活啊
    join
        2
    join  
       2012-05-09 22:26:28 +08:00
    我了个草,python这么潮的语言居然被你们公司这么冷落了。。。
    写python程序是件很爽的事情有木有?
    函数式编程编码效率很高的有木有?
    你公司的领导不懂技术么?
    reus
        3
    reus  
       2012-05-09 22:27:27 +08:00
    py不偏门,是他们太落伍了
    bhuztez
        4
    bhuztez  
       2012-05-09 22:29:18 +08:00   ❤️ 2
    > 顺便问一个问题,搞UDP编程,能用php或者asp完成么?

    能。但是,很显然,可维护性会比用 Twisted 写更糟糕。


    > 我还没说erlang呢。

    其实,Erlang 最合适。在你上面说的那个场景,Erlang,学起来容易,写起来代码又短,极大降低代码维护成本。


    > 当需要处理某个终端的上发http get 请求的时候,就是因为这个请求是 xxx.asp的形式的,就某人写了一个c语言的程序来截取tcp请求,然后转发给apache,然后用php处理。

    你们的IT部门很厉害啊。能写出这样的程序的人,就很少了,你还怪他们占CPU高。当然了,Windows上跑个 Apache 当反向代理都可以啊。
    bolome
        5
    bolome  
       2012-05-09 22:30:16 +08:00
    不能说学校里面不教就不叫流行语言
    myrual
        6
    myrual  
    OP
       2012-05-09 22:48:21 +08:00
    @bhuztez
    c 语言这个程序运行在ubuntu上,而写这个程序的人不会asp,所以自己找一个c语言的tcp服务器例子写了一个accept,然后靠线程处理后续逻辑的程序。
    显然这是一个阻塞的方法,一旦并发的客户端多了,意味着线程很多很多,如果客户端没有及时关闭tcp链接,那么意味着大量线程被无法关闭的tcp阻塞住无法推出。
    sophy
        7
    sophy  
       2012-05-09 22:48:44 +08:00
    我的妈呀。。。。。。
    reus
        8
    reus  
       2012-05-09 22:51:19 +08:00
    目测可以用nginx+lua解决此类问题
    virushuo
        9
    virushuo  
       2012-05-09 22:53:54 +08:00
    转发的那个需求为什么不用webserver的redirect来处理呢?
    fanzheng
        10
    fanzheng  
       2012-05-09 22:58:44 +08:00
    python不偏门吧,在国内的话确实不流行,国内学校教的office 还是2003,应该是10年前的软件了把。
    luguozmy
        11
    luguozmy  
       2012-05-09 23:04:12 +08:00   ❤️ 1
    您能别歧视ruby么?
    再说了, 如果你的C基础好, 学什么语言不都是一理通百理明的
    myrual
        12
    myrual  
    OP
       2012-05-09 23:07:12 +08:00
    @virushuo apache 的rewrite功能他不会。
    我也不会,而且真的没时间研究。
    其实整个服务器上的需求根本不需要apach php 等等东西。
    只要有一个能处理http get 的东西,然后能发出http get的请求,并且能操作数据库就行了。
    其实python twisted, 就可以了。只不过我现在没时间弄这个东西,他们也没有足够的勇气来做一个新版本。
    myrual
        13
    myrual  
    OP
       2012-05-09 23:16:23 +08:00
    @luguozmy 这个不算歧视吧。。。。。。。。。。,用的人少才可以给你带来生产力水平上竞争优势。

    另外我真的不觉得c语言基础好,学其他语言就可以的。 这个推论太简单了。
    我用函数式语言编过一些代码,这段经历告诉我学一门新的语言绝不是那么简单的。
    darasion
        14
    darasion  
       2012-05-09 23:32:00 +08:00   ❤️ 1
    难者不会,会者不难。

    我感觉,c都会写,python没理由不会写啊。

    c 和 python 哪个更难学?
    allenm
        15
    allenm  
       2012-05-09 23:33:40 +08:00
    apache 的 rewrite 功能,最多花半天时间看看文档就能配置出来了吧。这比写那个 c 的程序要快多了吧。当然解决问题的时候,会倾向于选择自己熟悉的技术,这样时间可控。
    quake0day
        16
    quake0day  
       2012-05-10 00:06:47 +08:00
    @myrual 其实这个像怪物似的程序有个优点,就是可以让黑客摸不着头脑。
    iveney
        17
    iveney  
       2012-05-10 00:30:18 +08:00
    python 算偏門,那brainfuck,P'' 算什麼阿
    ohhe
        18
    ohhe  
       2012-05-10 01:12:49 +08:00
    在什么公司就按公司的习惯走,你还是用.net实现好了。你们领导做的没错至少。
    rexren
        19
    rexren  
       2012-05-10 02:21:07 +08:00
    @ohhe说的对。 在什么公司最好就按照习惯走。鉴于python算不算偏门,现在我们学校cs新生的cs入门语言就是python,然后java。 C语言是在大三的时候上操作系统的时候再学的。 很多学校都把python作为计算机新生的入门语言, 当然有很多争论,但是好处是写python很有乐趣,可以激发学生兴趣。
    myrual
        20
    myrual  
    OP
       2012-05-10 07:05:41 +08:00
    @ohhe
    假设每个客户端每秒钟发送1个1k 大小的UDP 数据包,峰值的时候有3万个客户端同时联系服务器,峰值时间持续8小时。
    这个用.net实现的话,需要注意什么么?
    用线程可以么?
    可以用阻塞的方式实现么?
    如果有数据库操作是不是要放在单独的线程里面处理?
    66450146
        21
    66450146  
       2012-05-10 07:16:32 +08:00
    Python已经火到我们的iOS Team都打算找我学点,怎么能算偏门呢:)
    acgism
        22
    acgism  
       2012-05-10 07:34:46 +08:00
    Python 哪門子冷門了···
    clowwindy
        23
    clowwindy  
       2012-05-10 13:42:06 +08:00
    可能说的有点过分,不过如果一个公司从上到下的所有人都这样害怕学习新东西,宁愿花十几倍的时间用自己会的东西做一个轮子,也不愿学一下配置 apache 的 redirect,这个公司肯定没救了。
    myrual
        24
    myrual  
    OP
       2012-05-10 16:48:16 +08:00
    @clowwindy 我也觉得确实没救了,但是这样一个公司依然活着,而且活的很好,还是上市公司。产品还能进美国的Apple store。虽然差评很多,苹果发过警告信。
    Alien
        25
    Alien  
       2012-05-10 19:49:01 +08:00
    360?
    myrual
        26
    myrual  
    OP
       2012-05-11 06:57:58 +08:00
    no,做硬件产品的,被警告是因为差评和投诉太多
    davidzhang
        27
    davidzhang  
       2012-05-11 14:27:49 +08:00
    我认为技术没有偏不偏的问题,只能说什么语言更适合来做什么,我非常注重某种语言能够给我的项目在最短时间内,完成某一部分的工作,这才是关键,我认为没有万能的语言,也许有,但是我认为,让某种语言做他最擅长的事是最好的。
    AntiGameZ
        28
    AntiGameZ  
       2012-05-11 15:10:36 +08:00
    领导的顾虑是对的,毕竟,为了这个小程序,专门招个Python程序员?况且你离职后的某一天,程序出错了,也不大可能立即能找到人来维护代码吧。

    这和语言偏门不偏门没什么关系。
    likuku
        29
    likuku  
       2012-05-11 15:27:30 +08:00
    @luguozmy C基礎越好,學習C++/Java等面向對象的語言就越痛苦,越難轉換思維。
    myrual
        30
    myrual  
    OP
       2012-05-11 16:02:56 +08:00
    @AntiGameZ
    专门的python程序员都是写什么应用呢?
    另外真心觉得学习python是简单的过程。能有多难?
    甚至完全可以把python当作简化的c语言来用。
    我写了10年的单片机程序,一直做的都是根据不同情况把数据从一个地方放到另一个地方。python仅仅是会用,但是从没写过正式商用的任何东西,最值得骄傲的成果也只有以前公司的那些人,不到20个在用。
    在新公司,依靠twisted,几天可以UDP通信,TCP通信,socket编程。
    熟悉了网络编程之后,大部分时间是放在业务逻辑的设计,以及根据实验数据总结经验上。

    很难么?
    AntiGameZ
        31
    AntiGameZ  
       2012-05-11 18:30:55 +08:00
    @myrual 站在个人立场,你完全没有错。作为team的领导者,他需要一个能够保证的东西,除非说他自己可以沉下心学python,不然估计他什么也保证不了吧?谁能保证一个人能在1天,3天还是10天内学会某一种语言呢?

    而且,相比team内的资源也不是非常充裕的(这点在哪都一样吧?),能说给谁N天时间,什么都不干,专心去学某个东西么,人家本人愿意么?(没错,很多时候不想学习的人到处都是)。
    myrual
        32
    myrual  
    OP
       2012-05-11 19:43:46 +08:00
    @AntiGameZ
    我需要的是一个支持同时3万个客户端在线的服务器软件,用UDP通信。
    team里面技术分布是这样的,。
    5个人。
    一个pm,
    一个去年9月份入职的objective c程序员,比较有经验。
    一个去年9月份刚毕业的学生,objective c时间半年多。
    一个今年3月入职的前.net 程序员,业余java程序员。
    一个去年入职的前dephi java,主要是android程序员,写了一个c语言程序来转发客户端上发的请求,2000用户在线就会导致进程占用cpu100%。
    我,入职一个多月的程序员。 有10年的c语言经验。

    基于这个人员配比和技术分布。 我认为python已经是没办法的选择了。
    我都没好意思说erlang,go,nodejs。
    如果说用c语言来设计的话,我真的很烦恼,虽然理论上讲,人人都可以维护,但是你知道这里面可能出现的bug会有多少。
    bhuztez
        33
    bhuztez  
       2012-05-11 19:53:41 +08:00
    @myrual 果断Erlang吧,连4399用Erlang都用得好好的,你还犹豫什么。
    9hills
        34
    9hills  
       2012-05-11 20:12:39 +08:00
    @myrual 现学python又不是很麻烦的事情。。
    AntiGameZ
        35
    AntiGameZ  
       2012-05-11 21:45:05 +08:00
    @myrual 如果python是“唯一”选择,那应该向你的pm证明它的唯一性,进而在团队里推行Python。不过,看你楼顶的说法,pm应该是认为python是“你的选择”,而不是“唯一选择”。是不是应该想法从这点出发,说服他?
    kevinzhow
        36
    kevinzhow  
       2012-05-11 22:35:24 +08:00
    @9hills 嗯,有语言基础基本就是看看api的时间
    reus
        37
    reus  
       2012-05-11 22:35:33 +08:00
    你可以用C写nginx的扩展(虽然可以直接用lua模块,甚至直接用配置文件完成转发这种事情
    luguozmy
        38
    luguozmy  
       2012-05-13 10:12:15 +08:00
    @likuku 原来用了C这么多年, C语言还不是面向对象的, 朋友你碉堡了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1531 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 17:08 · PVG 01:08 · LAX 10:08 · JFK 13:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.