1
em70 2014-07-27 21:17:16 +08:00 via Android
谁说php代码不美,不但快,随便写的代码不用优化性能也不错。
另外,php为web而生,其他事情干不好。其他语言,可以做web,还能做别的。 |
2
lidashuang 2014-07-27 21:23:04 +08:00
写web,rails开发效率不比php慢,你昨不用。
|
3
tushiner 2014-07-27 21:27:06 +08:00 6
。。。。。不讨论语言的好坏是做好程序员的第一步。。。。。
|
4
TangMonk 2014-07-27 21:39:36 +08:00
@lidashuang 上手要比 php 麻烦点吧
|
5
akfish 2014-07-27 22:23:18 +08:00 1
语言有什么好讨论的,我基本上每个项目都会用完全不同的技术去做。
好的开发者不应该去追求把某种语言/平台撸到出老茧,熟能生巧猴子都做得到,只要时间足够。 迅速吸收新技术转化为生产力,才是真的快。 越是见得少,就越喜欢停留在自己能看到的范围内自我陶醉:你看我能把xxx撸得飞快!xxx是全宇宙最好的! |
6
zts1993 2014-07-27 22:34:32 +08:00
瓶颈又不在语言,快才是王道。
|
7
xuwenmang 2014-07-27 23:05:35 +08:00 2
因为有wordpress,因为有drupal,因为有joomla。
|
8
reeco 2014-07-27 23:59:52 +08:00
天下武功,唯快不破
这是我05年看《功夫》时现在还记得的一句台词 |
9
jsonline 2014-07-28 01:35:25 +08:00 via Android
嗯,PHP是最好的语言,我服。但我就是不写PHP
|
10
nine 2014-07-28 02:40:20 +08:00 3
php流行不是因为开发快,而是门槛低。
环境好搭建,程序只要一个ftp传上去就行了,不需要编译,不需要重启。 加上各种开源程序一堆堆,普通文科生随便学学拿来改点东西就接单了。 至于“快”,呵呵,做demo速度还行,复杂度高点的项目就不行了,而且没有好轮子。 缺少最佳实践的方案,问过很多人,都是自己整出一套私有的,而且不好用。 自己写过php框架,试过python node go 。最终到了ruby,发现什么东西在这儿都TM是现成的,其他别的语言的方案都是抄袭ruby的,NND。 用coffee写js(可以自动编译的),用slim写view ,简洁的model(看着YII定义的那一坨东西我就想死,还没我自己框架的ActiveRecord好用),一气呵成的migration,太爽了(YII是通过表生成model你造吗?)。 代码表达力太强了,从来没想过我能用一个13寸屏写了半年代码。(之前都是双Dell 2412还不太够用) 但就是部署稍微麻烦点。但总体上速度,呵呵,我只能说php弱爆了。 不讨论语言的好坏?呵呵。 好吧,我不讨论,我自己偷偷用ruby爽就好了。闭嘴多做实在事,精进技术,省的被喷。相信大部分rubyer的也都是这么想的吧。 |
11
tjmao 2014-07-28 02:54:26 +08:00 via iPhone 1
真的不是因为各种免费或收费的cPanel PHP空间吗……
|
12
yakczh 2014-07-28 07:11:58 +08:00
quick and dirty
|
13
wangdaimishu 2014-07-28 08:08:17 +08:00
主要是够简单,我一个做java的朋友,拿着php手册看了半天就可以动手开始做,虽然代码写的不忍直视,但是边看边做,很快东西就出来了,然后放服务器上去跑的还很Hi,其他语言是没法做到这点的。
|
14
wangdaimishu 2014-07-28 08:17:05 +08:00
@nine Yii只是默认通过表生成model,实际上model不仅可以用来做数据库的表映射,还能用来收集表单数据,可以说任何跟数据有关的你都可以通过model来处理,功能非常强大。
然后Yii的ActiveRecord不好用,大概是因为Yii1的的查询很多时候都需要你传入一个CDbCriteria对象,或者传递一个数组,确实没有 AR::find()->where()->andWhere()这样来的直观。 ROR确实很强大,这点大家都承认,但是没必要仅仅是了解了一下其他框架,并没有做深入的体验就断然否定一个框架,这可不像是一个做技术人员的态度。 |
15
mongodb 2014-07-28 08:35:05 +08:00
@jsonline 楼主哪里有半点提到“PHP是最好的语言了”……
PHP是这个世界上最糟糕的语言没有之一,但要比快速成型和部署容易程度,还要考虑进去楼主的语境里提到的快并不只是语言效率高,写东西快,还要考虑到可能的人才招募容易度,容错度—— 在比quick and dirty上,没有一个语言能和PHP比,这方面它还真的是世界上最好。 |
16
mongodb 2014-07-28 08:37:28 +08:00
大部分时候的初级网站开发——也即楼主所说的语境下,先花上三个小时写个东西出来,然后用12小时完善并上线的这种情况,用什么语言都差不多,但PHP在这种情况下不会落后,开发效率的差别仅仅是大家对各自语言的熟悉程度和打字速度。
|
18
xlmo 2014-07-28 08:58:51 +08:00
恩,除了自家媳妇,别人的老婆都不是人。楼上某些人的心态真的有问题。
|
19
lazyphp 2014-07-28 09:11:10 +08:00
@xuwenmang 我认同你的观点。 PHP真的是因为受 wordpress 这些产品影响才会有这么多人学PHP。至少我是因为用wordpress才学PHP的。
|
21
zhouzm 2014-07-28 09:26:49 +08:00
伪命题,请问TIOBE排行榜前10哪个语言不流行了?
要说上手快,phthon不比php差多少吧 如果看后续发展,php也许还会流行较长的时间,但总体来说,下跌的最快。最终被python和javascript追上只是时间长短问题 |
22
ren2881971 2014-07-28 09:39:16 +08:00
上手快、开发快、项目多、便于接私活、以上
|
24
TangMonk 2014-07-28 09:49:29 +08:00
php 中的 drupal 是个很好的东西,社区也不错
drupal 的一些 module 的解决方案也不错,有时候遇到实现一个功能有问题的时候,常常去参考 drupal module 的源码。 |
27
lijsh 2014-07-28 09:58:22 +08:00
各有各的使用场景吧,PHP只是让我看起来不爽,语法有点丑。
|
28
teavoid 2014-07-28 10:01:20 +08:00
我觉得为毛要把自己定义成 php程序员,python程序 或者 ruby程序员,语言是工具,而不是定义。
|
29
trimleo 2014-07-28 11:02:57 +08:00
月经贴。。
|
30
yangkeao 2014-07-28 11:10:16 +08:00
|
31
yangkeao 2014-07-28 11:11:34 +08:00
|
32
jasontse 2014-07-28 11:51:31 +08:00 via iPad
#如何让一个社区的人吵起来系列
#钓鱼帖系列 |
33
maddot 2014-07-28 12:30:50 +08:00
就像作家,从来都不是因为他们使用的语言而分出优劣,而是因为他们的作品
我想起小时候一些村里外出务工的人们,谈起外面的世界时的观点,他们认为自己说的方言,是天下间最好听的。 |
34
robertlyc 2014-07-28 12:51:09 +08:00
web框架
ruby/rails一档 其他语言随意 |
35
kisshere 2014-07-28 13:09:55 +08:00 via Android 1
一谈到编程语言or编辑器,phper和DWer就只能说,你们聊吧,我先走了,而这时高逼格就该大显身手了,虽然他们自己做的东西惨不忍睹
|
36
imn1 2014-07-28 13:32:59 +08:00
10年来,我见过php vs c/c++, php vs java/jsp, php vs asp/.net, php vs python……
10年来,php一直存在……甚至存在于不屑php的那些人心中 10年来,各种讨论似乎都离不开“美不美”、“正规不正规”、“开发快慢”……似乎没什么人关心客户体验、服务器环境配置,每个人都只考虑自己舒服么? 一般论的前提下,语言怎么样影响的是技术团队,客户体验影响的是收入来源,硬件适应度影响的是成本效益,在一个商业运作上,后两者永远都要比程序员工作做得是否“舒服”来得重要 如果一个页面,只需print、echo一些内容,但要给上千万、上亿人浏览的,结合服务器配置你会选什么语言? 如果一个页面,要精确计算地球到火星的最远点距离,但只给不到10个人查看的,结合服务器配置你会选什么语言? 试试从商业角度讨论一下,满负荷,忽略其他损失,如果每个页面响应多一秒,年内会损失多少客户PV? http连接95%以上都是短连接,尽快完成并结束一个连接,腾空给下一个,才是web的王道,即使做前端的也该明白这点 |
37
kmvan 2014-07-28 14:19:10 +08:00 via Android
不要去鄙视任何一种语言,他们都是人类智慧的结晶
|
38
MarioLuisGarcia 2014-07-28 16:03:35 +08:00
You're not the language, and the language isn't you.
|
39
breestealth 2014-07-28 16:10:30 +08:00
说某某语言在另一种语言面前是渣的各位,难道你们不知道基本上当前PHP、Python、Ruby、Node之类的在Java面前就是玩具么?
讨论语言毫无意义。 |
41
yangxiongwei 2014-07-28 17:09:23 +08:00
Java的轮子应该是最多的
|
42
nine 2014-07-28 18:30:49 +08:00 1
@imn1 你这想法基本就是停留在表面,根本没有深层次的思考。细节决定成败。
@breestealth 根本就不是语言层面的差距,而是整个生态环境的差距。 @TangMonk 我没有深入了解过node,估计你也没有深入了解过吧。某次ruby聚会上,某个女程序员对node的module的吐槽,各种坑,和ruby比简直天差地别 @wangdaimishu 收集表单数据我知道,我说的不是这个。YII查询貌似也不需要非要传递一个CDbCriteria,而且传递CDbCriteria也没有什么不妥的。 而且我在刚开始用Rails的时候甚至觉得觉得缺少一个类似这样的玩意。 (用在哪个场景我忘了) 而真正是在多人协同的时候,需要同步表结构的时候,问题就来了。 开发A在表a增加了一个字段,开发B在表a增加了另外一个字段,这时候怎么同步呢?最原始的方法是用navicat手工同步,一条一条比对,极其容易出错,当表结构变化超过5次,已经没人能说的清誰先谁后、哪个是最终正确的表结构了。 我在用自己的框架的时候也有这个问题,我在各种php论坛、群里询问这个问题,多方查资料,线下咨询。(因为当时还是想做自己的框架) 觉得应该可以做成“表结构版本控制”的东西,把表结构变化文件化,然后用git等版本控制工具同步变化。 后来发现rails里面的migration好像就是这个玩意。 然后想到Django里的syncdb 好像也是做这个的,当时回想起n年前买过一本Django的书,里面明确说明“Django是很智能的,即使你在文件里写明了删除某个字段,实际syncdb也不会删除,为了避免部署的时候删错东西”,我简直瀑布汗。。。。 (后来我也没有去考证到底在哪一页,python的书我基本都扔了,就留了一本python cookbook)。 刚刚我又搜了一下The Django Book,找到了类似的东西 http://djangobook.py3k.cn/2.0/chapter05/ ~~~~~~~~~~~~~~~ syncdb 命令是同步你的模型到数据库的一个简单方法。 它会根据 INSTALLED_APPS 里设置的app来检查数据库, 如果表不存在,它就会创建它。 需要注意的是, syncdb 并 不能将模型的修改或删除同步到数据库;如果你修改或删除了一个模型,并想把它提交到数据库,syncdb并不会做出任何处理。 (更多内容请查看本章最后的“修改数据库的架构”一段。) ~~~~~~~~~~~~~~~ 不过我没找到“修改数据库的架构”这一段。 我研究python的web开发主要还是在2010年左右,可能现在python社区有解决方案,只是我不知道(请谅解) 然后某天看到YII里也有migration,但是这明显是一个后补进的设计,因为YII并没有强制使用migration来生成表结构,也许是为了好上手吧。 但我们可以强制团队必须使用migration,于是流程是什么呢? 1 写migration文件 2 运行migration ,生成表结构 3 根据表结构生成model文件 而rails是 1 rails g model model_name 直接生成model文件和migration文件 2 写migration文件 2 $rake db:migrate 根据建立表结构 由此可以看出来YII的migration是可以砍掉的,目的是为了某些不想写migration或压根不想了解migration的人,手工建表也可以使用yii框架的其他功能。 而Rails则是赤裸裸的由ruby代码+ruby命令行来控制一切。 此时我们比较一下2个model文件 发现rails的model只有2行 1 class SourceHtml < ActiveRecord::Base 2 end 而YII的model里面洋洋洒洒。 这时候你说了,YII的model里面写的东西可以用来写验证和生成表单,Rails其实也是可以的。 然后我们看看YII的model里写了多少无趣的东西 public static function model($className=__CLASS__) { return parent::model($className); } 每个方法在model里面都有,OMG! dont repeat your self好吗? 我自己的的框架里是不需要定义这个方法的,因为 我的ActivRecord里是这样写的 static public function model(){ $class_name = get_called_class(); if (is_callable("{$class_name}::instance")) { return $class_name::instance(); } return new static; } 而YII的CActiveRecord是这样的 public static function model($className=__CLASS__) { if(isset(self::$_models[$className])) return self::$_models[$className]; else { $model=self::$_models[$className]=new $className(null); $model->attachBehaviors($model->behaviors()); return $model; } } 对比了一下我知道为什么了,用new static的做法在IDE没有智能提示的,所以YII妥协了,要显式的传递一个__CLASS__进去 而我又在model里发现了这样的东西 public function rules() { return array( array('user_id, last_time, last_ip', 'numerical', 'integerOnly'=>true), array('player_name', 'length', 'max'=>255), array('id, player_name, user_id, last_time, last_ip', 'safe', 'on'=>'search'), ); } public function attributeLabels() { return array( 'id' => 'ID', 'player_name' => '玩家昵称', 'user_id' => '平台用户', 'last_time' => '最后登录时间', 'last_ip' => '最后登录ip', ); } 这意味着什么?这些代码都是由表结构生成的。我不知道把表结构复制出来一份放到model里的意义何在。 于是我们需要修改表结构的时候,要酱紫 1 写migration 2 运行migration 3 ? 运行完migration之后,model里的rules() attributeLabels() 是不会改变的,model里的代码需要手工再修改一遍,而且绝对不止这两个method。如果表结构修改比较多,呵呵。。。 当然你可以运行gii什么的,重新生成一遍model文件,但结果是,自己手工写的代码会被覆盖掉。所以这个操作是个绝对危险的动作。 所以也有很多人php开发不喜欢用框架。 其实原因是:用不合理的设计,搞了一堆一堆半半拉拉的自动化工具,做了一个蹩脚的不完整的解决方案,还楞要人家学习和使用。用的人不烦才怪。 80% * 80% * 80% = 51.2% , 还不及格 我还见过更极端的,坚决不用YII,要用YII他就闪人。 我不知道Laravel是个什么情况,看过文档,基本算是rails在php这边做的复制吧。 不过既然有了iPhone,谁还用小米。 年前某个公司boss让我带团队,我说用ruby吧,他同意了,后来又反悔了,团队已经学了并用rails做项目一个月了,丫硬非要改回php。直接闪人。 还是那句话“细节决定成败”,python node go php 基本都看过了,不是单是语言好坏,主要在于社区气质,只有ruby社区是最有追求极致的气质,果断皈依。 |
43
refear99 2014-07-28 20:10:48 +08:00
为翻页添砖加瓦,"PHP是最好的语言!!!"
|
44
anewg 2014-07-28 20:20:49 +08:00 1
Ruby 讲的是一个情怀
|
45
TangMonk 2014-07-28 20:33:27 +08:00
@nine
node的个别 module 有 bug 是正常的,ruby gems 也一样吧。 而且关于 module 机制这个,npm 要比 bundler 做的要好吧。 node 的确有些缺点,es6出来了之后 node的威力会越来越大。 |
46
robertlyc 2014-07-28 20:54:32 +08:00
连TJ这样的人都离开node社区了 还越来越好 呵呵
|
49
xuwenmang 2014-08-18 20:46:09 +08:00
@nine
不是单是语言好坏,主要在于社区气质,只有ruby社区是最有追求极致的气质,果断皈依。 —————————————————————————————————————————————— 这在古代来说,你就是迂腐的文人。你老板肯定是浙江人。所以你老板是老板,你在给他干活。。 |
50
nine 2014-08-19 02:28:17 +08:00
@xuwenmang 呵呵
我就是文科生,先前做运营的,后来发现开发人员非常不给力,想做东西还是得自己上,所以运维、开发都自己搞。 php搞了5年,还是换了,真的是评估过各种语言和框架,python 、 node 、go 都玩过,最终发现还是ruby on rails 最适合。我不是拘泥于形式的人,也不是靠开发吃饭的人,不然5年php经验、写过框架还是挺值钱的。 而且现在重新运营了,因为ruby能完全满足我“快速开发”的需求了(php真心不行),思维又从洁癖的开发人员转换成“quick and dirty”这种运营提倡的思维了。 如果我说我是rubyist,ruby社区也许会以我为耻的吧 [阴险] |
51
xdazz 2014-08-21 11:29:52 +08:00
代码美不美主要取决于程序员,而不是语言。
|
52
jinzhe 2014-09-30 14:09:47 +08:00
我管你觉得啥好呢!需求决定一切!
是要不是大型网站就可以用PHP!如果有高并发之类的选择golang混编就行了!没必要纠结 |