paip.php 与js 的相似性以及为什么它们这么烂还很流行。。



php与js异常的流行,web 90%都被他们统治了。发现了他们有意思的一些共性。。



结构一番总结,得出了它们共有的特点、特性:



===史上被骂最多的编程语言——除了JavaScript就是php

糟糕语言,垃圾语言,XXX很烂,玩具语言,骂名,受PHP/js毒害,狗屎





===设计匆忙

JavaScript“几天就设计出来了”,php也差不多

Ruby的设计者——松本行弘为此感叹:



“这样的出身,得到这样的成功,还真让人出乎意料,……”,



“但由于开发周期短,确实也存在着不足……”。



作者Attilax 艾龙,  EMAIL:1466519819@qq.com

来源:attilax的专栏

地址:http://blog.csdn.net/attilax



====api垃圾

它绝不可能获得任何“年度友好API(Friendliest API of the Year)”的奖项!



===simple还是simple

俩个语言都被“专业人士”鄙视为玩具语言



===语法丑陋

怎么能和优雅的python,ruby,java 相比呢。

不一致的函数命名、使用惯例,以及其它一些怪异的东西



===简陋就是简陋,命名空间,闭包都没有,

当然最近听说山寨了java,c++的命名空间



====过程和面向对象的杂混

混乱混乱混乱



=====从来没听说过什么框架

面对而个框架满天飞的时代,这两个语言使用的框架依然很少,一定是上个世纪的遗老遗少

当然现在也山寨了不少



==== 编写简单,Ide依赖性弱

 很多人没有使用过任何IDE。。





====两者都有着糟糕的设计

一定上个世纪的遗留



====语言结构混乱



====很低的入门门槛。。大家都是快枪手



====资源丰富(网上代码一抓 一大把)。。

几乎都是垃圾代码,烂狗屎





=====随处可见的HTML和SQL



找找代码中的HTML代码和SQL语句,你应该能够很快地辨别这些代码是否应该出现在这里。如果你发现一个文件里既有HTML又有SQL。。



而那些高大上的mvc,oop,orm 在这俩个语言里面都不待见。。





===好不容易有了oo,却被大家视为山寨,鸡肋。。

差不多一半人不认同oo,这些人都是垃圾程序员







===都是很烂,但是能用

他们的东西很烂,但是能用。。方便。



===ide调试困难

相对python来说



===随便代码写的再烂,都不会资源泄露

而python,ruby却有这个问题



===基本上80-90%的xxx项目都烂如一堆狗屎





===多核垃圾

不支持多核CPU,JavaScript没有线程的概念,也缺乏必要的线程同步手段,使得它几乎无法编写能充分应用客户端多核CPU计算能力的代码..php也是





====无法应对复杂的互联网应用程序,不支持大家己普遍熟悉的以类为模板的面向对象编程方式

ms现在山寨了不少,造成复杂度增高,遭到了广大的入门垃圾程序员的一致抵制



===都可以容易的嵌入到HTML,获得混乱的使用



===语法要求极其地宽松,灵活,一种实现N种写法,每个人的风格都大大不同







=========??最大的问题??为什么Php ,js这么烂还在流行??

一个东西可以很不堪但是很流行,比如塑料袋。

paip.php 与js 的相似性以及为什么它们这么烂还很流行。。的更多相关文章

  1. JS学习之路(这个觉得写的很好,放在这里是方便查看)

    总则-都是对象,都是引用 在接触js前用的比较多的是java,在刚开始接触js的时候,老实讲,我是有点崩溃的,相信许多像我一样从后端语言向js转的童鞋们肯定有一样的感受,这玩意儿太灵活了,好像怎么样都 ...

  2. js便签笔记(13)——jsonp其实很简单【ajax跨域请求】

    前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资料,原来如此... 为何一直知道jsonp,但一直迷迷糊糊的不明白 ...

  3. js中盒子模型常用的属性你还记得几个?

    //clientWidth;//内容宽度Width+左右填充padding//clientHeight;//内容高度height+上下填充padding//clientLeft;//左边框的宽度相当于 ...

  4. spring boot+vue.js发送post时一直415,swagger却很正常

    首先百度说要加header为applicaiton/json,加完后一直400,说json不符合格式,webstorm说要单引号,spring boot那边要双引号...... 后来不知道看了哪里说把 ...

  5. js优化提升访问速度

    一.给JS文件减肥. 有的人为了给网站增加炫目效果,往往会使用一些JS效果代码,这在上个世纪似乎还很流行,对于现在来说,最好在用户体验确实需要的情况下,使用这些东西.至于希望给自己的JS文件减肥的童鞋 ...

  6. js函数的伪重载

    这也是今天写东西是遇到的一个问题,导致我联想起了函数重载的问题. 在javascript中是没有函数重载机制的,对于用惯了java开发的同学可能就表示吃惊了,我屮艸芔茻,函数 没有重载?那怎么搞?!! ...

  7. 借助Nodejs探究WebSocket

    文章导读: 一.概述-what's WebSocket? 二.运行在浏览器中的WebSocket客户端+使用ws模块搭建的简单服务器 三.Node中的WebSocket 四.socket.io 五.扩 ...

  8. Nodejs之WebSocket

    文章导读: 一.概述-what's WebSocket? 二.运行在浏览器中的WebSocket客户端+使用ws模块搭建的简单服务器 三.Node中的WebSocket 四.socket.io 五.扩 ...

  9. 一张图告诉你最流行的 7 个 JavaScript框架特点

    欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~​ AngularJ.js                                                  由g ...

随机推荐

  1. 校验日期函数的js

    /判断输入内容是否为空 function IsNull(){ var str = document.getElementById('str').value.trim(); if(str.length= ...

  2. CSS3--背景颜色的渐变效果

    一.渐变:gradients 线性渐变(linear gradients) background:-webkit-linear-gradient(90deg,red 10%,blue); 1.需要有内 ...

  3. python学习之——计算给出代码中注释、代码、空行的行数

    题目:计算给出代码中注释.代码.空行的行数 来源:网络 思路:注释行以 ‘#’开头,空行以 ‘\n’ 开头,以此作为判断 def count_linenum(fname): fobj = open(f ...

  4. 解决 webx.ml 中The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 问题

    在Eclipse 的项目  上,点击鼠标右键 选中 ,并 Finish 即可.

  5. Phone Gap [error] cmd: Command failed with exit code 1

    下投票 我不知道如何解决这个问题,但尝试了这一点,将解决肯定. 这是由于ANT工具找不到的tools.jar在JRE lib目录下.当我从复制的tools.jar JDK的lib目录下,以JRE li ...

  6. SparkContext的初始化(叔篇)——TaskScheduler的启动

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  7. Redis 集群方案- 主从切换测试

    大约一年多前,公司同事开始使用Redis,不清楚是配置,还是版本的问题,当时的Redis经常在使用一段时间后,连接爆满且不释放.印象中,Redis 2.4.8以下的版本由于设计上的主从库同步问题,就会 ...

  8. 1334: [Baltic2008]Elect

    Description N个政党要组成一个联合内阁,每个党都有自己的席位数. 现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好. 对于一个联合内阁,如果某个政党 ...

  9. js-BOM之offset家族、移动函数的封装升级(轮播图)

    Obj.style.width/obj.style.height与obj.offsetWidth/obj.offsetHeight的区别: <style> #div1{ height: 2 ...

  10. JS-for中的i

    var aBtn = document.getElementsByTagName('input');        for( var i=0; i<aBtn.length; i++ ){     ...