python算偏门的语言么? - V2EX
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 6559 次点击
    这是一个创建于 4972 天前的主题,其中的信息可能已经有所发展或是发生改变。
    只是抱怨一下而已。
    用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阻塞住无法推出。
    0racleTink
        7
    0racleTink  
       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语言经验。
    br />基于这个人员配比和技术分布。 我认为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     Solana     2515 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 10:16 PVG 18:16 LAX 02:16 JFK 05:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86