SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
A History of PHP
@laruence
SELF INTRODUCTION
‣ Author of Yaf, Yar, Yac, Yaconf, Taint Projects
‣ Maintainer of Opcache, Msgpack, PHP-Lua Projects
‣ PHP Core Developer Since 2011
‣ Zend Consultant Since 2013
‣ One of PHP7 Core Developers: Dmitry Stogov, Xinchen Hui, Nikita Popov
‣ Chief Software Architect at Lianjia Since 2015
W3Techs.com 100
‣ Created in 1994 by Rasmus Lerdorf
‣ 20+ Years Programming Language
‣ Most Popular Web Service Program Language
‣ PHP7 is Released at 3 Dec 2015
‣ Latest Version is PHP7.0.4
PHP
我要讲的, 不保证都是对的!
‣ Tim Berners-Lee
‣ 欧洲原⼦核研究会(CERN)电话簿
‣ World Wide Web
‣ Web的⾸要任务就是向⼈们提供

信息和信息服务
WWW(1989)
Tim Berners-Lee Web ” WorldWideWeb”
‣ FrontPage
‣ None Javascript
‣ SSI : Server Side Includes
Static Pages(1990~1993)
‣ CGI (Comm Getway Interface)
‣ CGI 1.0定义了程序和WebServer通信的接⼜
‣ CGI ⼤部分使⽤C, Pascal等传统语⾔编写
‣ 开发维护执⾏效率都很低
‣ 曾经URL中随处可见的cgi-bin
CGI(1993)
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define ishex(x) (((x) >= '0' && (x) <= '9') || ((x) >= 'a' && 
(x) <= 'f') || ((x) >= 'A' && (x) <= 'F'))
int htoi(char *s) {
int value;
char c;
c = s[0];
if(isupper(c)) c = tolower(c);
value=(c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16;
c = s[1];
if(isupper(c)) c = tolower(c);
value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10;
return(value);
}
void main(int argc, char *argv[]) {
char *params, *data, *dest, *s, *tmp;
char *name, *age;
puts("Content-type: text/htmlrn");
puts("<HTML><HEAD><TITLE>Form Example</TITLE></HEAD>");
puts("<BODY><H1>My Example Form</H1>");
puts("<FORM action="form.cgi" method="GET">");
puts("Name: <INPUT type="text" name="name">");
puts("Age: <INPUT type="text" name="age">");
puts("<BR><INPUT type="submit">");
puts("</FORM>");
data = getenv("QUERY_STRING");
if(data && *data) {
params = data; dest = data;
while(*data) {
if(*data=='+') *dest=' ';
else if(*data == '%' && ishex(*(data+1))&&ishex(*(data+2))) {
*dest = (char) htoi(data + 1);
data+=2;
} else *dest = *data;
data++;
dest++;
}
*dest = '0';
s = strtok(params,"&");
do {
tmp = strchr(s,'=');
if(tmp) {
*tmp = '0';
if(!strcmp(s,"name")) name = tmp+1;
else if(!strcmp(s,"age")) age = tmp+1;
}
} while(s=strtok(NULL,"&"));
printf("Hi %s, you are %s years oldn",name,age);
}
puts("</BODY></HTML>");
}
‣ PHP 1.0: Personal HomePage Tool
‣ Written in Perl
‣ Solves Problems
‣ ⾸创: HTML和脚本融合在⼀起
‣ 开发维护效率⼤幅提升
PHP 1 (1994)
<html><head><title>Form Example</title></head>
<body><h1>My Example Form</h1>
<form action="form.phtml" method="POST">
Name: <input type="text" name="name">
Age: <input type="text" name="age">
<br><input type="submit">
</form>
<?if($name):?>
Hi <?echo $name?>, you are <?echo $age?> years old
<?endif?>
</body></html>
‣ PHP 2.0: PHP/FI(Form Interpreter)
‣ Written in C
‣ 还只是简单的Form解析
‣ 没有成熟的语法结构
‣ 加⼊了对mSQL的⽀持
‣ Netscape Navigator 2.0: LiveScript
‣ 1996: 50000个域名使⽤PHP
PHP 2 (1995 ~ 1997)
‣ PHP: PHP: Hypertext Preprocessor
‣ Andi, Zeev重写了Parser
‣ 终于是⼀门语⾔了(较完备的语法结构)
‣ 最关键的: 弱类型, 可扩展的语⾔
PHP 3 (1998)
‣ Zend Engine 1.0
‣ 基本的OO⽀持
‣ 会话⽀持
‣ 性能提升
‣ 社区快速发展
PHP 4 (2000)
‣ Yahoo! 从YScript迁移到了PHP
‣ Rasmus Lerdorf 也⼊职Yahoo!
PHP 4 (2002)
‣ Zend Engine 2.0
‣ 更好的OO⽀持
‣ PDO的引⼊
‣ 性能提升
‣ 社区快速成长
PHP 5 (2004)
‣ Use or Not Use Framework
Framework?(2005~2008)
‣ Unicodes⽀持
‣ 然⽽....
PHP 6 (2005)
‣ HipHop
‣ JPHP
‣ Zephir
‣ Yaf
‣ Phalcon
Performance(2010+)
‣ Secret Project by Zend
‣ Dmitry, 我
‣ Opcache + LLVM
‣ Benchmark超过了HHVM但实际项⽬中看不到提升
‣ 但是我们看到了⼀个新的⽅向
PHP5 JIT (2013)
‣ Zend Engine 3.0
‣ Dmitry, 我, 以及Nikita
‣ 基于PHP5.5 Opcache JIT项⽬
‣ 最⼤的⼀次重构, 历时⼀年多开发
‣ PHP最⼤的性能提升版本
PHP 7 (2014)
‣ http://phpsadness.com/
‣ http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
‣ http://blog.codinghorror.com/the-php-singularity/
‣ http://webonastick.com/php.html
‣ http://aurelio.audero.it/blog/2014/02/05/why-people-think-php-sucks/
‣ https://maurus.net/resources/programming-languages/php/
‣ http://www.bitstorm.org/edwin/en/php/
‣ https://teamtreehouse.com/forum/why-php-sucks
‣ https://www.reddit.com/r/PHP/.../why_do_so_many_developers_hate_php/
‣ https://www.quora.com/.../Is-PHP-a-badly-designed-programming-language/
‣ 还有很多…
有些⼈不喜欢PHP
‣ Haters Gonna Hate
‣ They Are True
‣ History is History
‣ Use The Right Tool
‣ If you like it, Ignore the hate, Get things done
语⾔只是⼯具
Shake if off - Taylor swift
‣ 易学习
‣ 易安装
‣ 社区庞⼤
‣ 开源系统繁多
‣ 容易找⼯作 :)
PHP的优点
‣ 1000+开发⼈员
‣ 近百万的使⽤者
‣ 上千万的域名
‣ ….
未来
PHP未来变成什么样, 完全在什么⼈
加⼊这个开放的社区
‣ http://w3techs.com/technologies/overview/programming_language/all
‣ https://zh.wikipedia.org/wiki/Tim_Berners-Lee
‣ http://talks.php.net/confoo16#/2
‣ http://www.slideshare.net/isotopp/20-years-of-php
‣ http://php.net/manual/en/history.php.php
Links
Q&A

Más contenido relacionado

La actualidad más candente

Introduction to Distributed System
Introduction to Distributed SystemIntroduction to Distributed System
Introduction to Distributed SystemSunita Sahu
 
Handheld operting system
Handheld operting systemHandheld operting system
Handheld operting systemAj Maurya
 
Transaction states and properties
Transaction states and propertiesTransaction states and properties
Transaction states and propertiesChetan Mahawar
 
Distributed Query Processing
Distributed Query ProcessingDistributed Query Processing
Distributed Query ProcessingMythili Kannan
 
17 cpu scheduling and scheduling criteria
17 cpu scheduling and scheduling criteria 17 cpu scheduling and scheduling criteria
17 cpu scheduling and scheduling criteria myrajendra
 
OS - Process Concepts
OS - Process ConceptsOS - Process Concepts
OS - Process ConceptsMukesh Chinta
 
Distributed DBMS - Unit 8 - Distributed Transaction Management & Concurrency ...
Distributed DBMS - Unit 8 - Distributed Transaction Management & Concurrency ...Distributed DBMS - Unit 8 - Distributed Transaction Management & Concurrency ...
Distributed DBMS - Unit 8 - Distributed Transaction Management & Concurrency ...Gyanmanjari Institute Of Technology
 
Transactions in dbms
Transactions in dbmsTransactions in dbms
Transactions in dbmsNancy Gulati
 
Multi threading
Multi threadingMulti threading
Multi threadinggndu
 
Java/Servlet/JSP/JDBC
Java/Servlet/JSP/JDBCJava/Servlet/JSP/JDBC
Java/Servlet/JSP/JDBCFAKHRUN NISHA
 
Performance optimization for Android
Performance optimization for AndroidPerformance optimization for Android
Performance optimization for AndroidArslan Anwar
 

La actualidad más candente (20)

Introduction to Distributed System
Introduction to Distributed SystemIntroduction to Distributed System
Introduction to Distributed System
 
Handheld operting system
Handheld operting systemHandheld operting system
Handheld operting system
 
Transaction states and properties
Transaction states and propertiesTransaction states and properties
Transaction states and properties
 
Interface
InterfaceInterface
Interface
 
2 phase locking protocol DBMS
2 phase locking protocol DBMS2 phase locking protocol DBMS
2 phase locking protocol DBMS
 
Threads in JAVA
Threads in JAVAThreads in JAVA
Threads in JAVA
 
Android Fragment
Android FragmentAndroid Fragment
Android Fragment
 
Networking in Java
Networking in JavaNetworking in Java
Networking in Java
 
Concurrency control
Concurrency control Concurrency control
Concurrency control
 
Distributed Query Processing
Distributed Query ProcessingDistributed Query Processing
Distributed Query Processing
 
serializability in dbms
serializability in dbmsserializability in dbms
serializability in dbms
 
17 cpu scheduling and scheduling criteria
17 cpu scheduling and scheduling criteria 17 cpu scheduling and scheduling criteria
17 cpu scheduling and scheduling criteria
 
OS - Process Concepts
OS - Process ConceptsOS - Process Concepts
OS - Process Concepts
 
Distributed DBMS - Unit 8 - Distributed Transaction Management & Concurrency ...
Distributed DBMS - Unit 8 - Distributed Transaction Management & Concurrency ...Distributed DBMS - Unit 8 - Distributed Transaction Management & Concurrency ...
Distributed DBMS - Unit 8 - Distributed Transaction Management & Concurrency ...
 
Transactions in dbms
Transactions in dbmsTransactions in dbms
Transactions in dbms
 
Query trees
Query treesQuery trees
Query trees
 
Multi threading
Multi threadingMulti threading
Multi threading
 
System calls
System callsSystem calls
System calls
 
Java/Servlet/JSP/JDBC
Java/Servlet/JSP/JDBCJava/Servlet/JSP/JDBC
Java/Servlet/JSP/JDBC
 
Performance optimization for Android
Performance optimization for AndroidPerformance optimization for Android
Performance optimization for Android
 

Destacado

The secret of PHP7's Performance
The secret of PHP7's Performance The secret of PHP7's Performance
The secret of PHP7's Performance Xinchen Hui
 
PHP7 - For Its Best Performance
PHP7 - For Its Best PerformancePHP7 - For Its Best Performance
PHP7 - For Its Best PerformanceXinchen Hui
 
PHP7.1 New Features & Performance
PHP7.1 New Features & PerformancePHP7.1 New Features & Performance
PHP7.1 New Features & PerformanceXinchen Hui
 
China PHP Technology Summit 2011 ppt
China PHP Technology Summit 2011 pptChina PHP Technology Summit 2011 ppt
China PHP Technology Summit 2011 pptXinchen Hui
 
Php 5.4 performance
Php 5.4 performancePhp 5.4 performance
Php 5.4 performanceXinchen Hui
 
Weibo lamp improvements
Weibo lamp improvementsWeibo lamp improvements
Weibo lamp improvementsXinchen Hui
 
High Performance Solution for PHP7
High Performance Solution for PHP7High Performance Solution for PHP7
High Performance Solution for PHP7Xinchen Hui
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life CycleXinchen Hui
 

Destacado (11)

The secret of PHP7's Performance
The secret of PHP7's Performance The secret of PHP7's Performance
The secret of PHP7's Performance
 
PHP7 - For Its Best Performance
PHP7 - For Its Best PerformancePHP7 - For Its Best Performance
PHP7 - For Its Best Performance
 
PHP7.1 New Features & Performance
PHP7.1 New Features & PerformancePHP7.1 New Features & Performance
PHP7.1 New Features & Performance
 
China PHP Technology Summit 2011 ppt
China PHP Technology Summit 2011 pptChina PHP Technology Summit 2011 ppt
China PHP Technology Summit 2011 ppt
 
Php 5.4 performance
Php 5.4 performancePhp 5.4 performance
Php 5.4 performance
 
Php performance
Php performancePhp performance
Php performance
 
Weibo lamp improvements
Weibo lamp improvementsWeibo lamp improvements
Weibo lamp improvements
 
High Performance Solution for PHP7
High Performance Solution for PHP7High Performance Solution for PHP7
High Performance Solution for PHP7
 
Seguranca em PHP @edgarsandi
Seguranca em PHP @edgarsandiSeguranca em PHP @edgarsandi
Seguranca em PHP @edgarsandi
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life Cycle
 
Php Presentation
Php PresentationPhp Presentation
Php Presentation
 

Similar a A History of PHP

maxbox starter72 multilanguage coding
maxbox starter72 multilanguage codingmaxbox starter72 multilanguage coding
maxbox starter72 multilanguage codingMax Kleiner
 
Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011Jimmy Schementi
 
Php basic for vit university
Php basic for vit universityPhp basic for vit university
Php basic for vit universityMandakini Kumari
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisFastly
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.Mike Brevoort
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Guillaume Laforge
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power pointjustmeanscsr
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power pointjustmeanscsr
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power pointjustmeanscsr
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power pointjustmeanscsr
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power pointjustmeanscsr
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power pointjustmeanscsr
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power pointjustmeanscsr
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power pointjustmeanscsr
 
Php training100%placement-in-mumbai
Php training100%placement-in-mumbaiPhp training100%placement-in-mumbai
Php training100%placement-in-mumbaivibrantuser
 
Spark hands-on tutorial (rev. 002)
Spark hands-on tutorial (rev. 002)Spark hands-on tutorial (rev. 002)
Spark hands-on tutorial (rev. 002)Jean-Georges Perrin
 

Similar a A History of PHP (20)

Current state-of-php
Current state-of-phpCurrent state-of-php
Current state-of-php
 
maxbox starter72 multilanguage coding
maxbox starter72 multilanguage codingmaxbox starter72 multilanguage coding
maxbox starter72 multilanguage coding
 
Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011
 
Php basic for vit university
Php basic for vit universityPhp basic for vit university
Php basic for vit university
 
Next .NET and C#
Next .NET and C#Next .NET and C#
Next .NET and C#
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
Php intro
Php introPhp intro
Php intro
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Php training100%placement-in-mumbai
Php training100%placement-in-mumbaiPhp training100%placement-in-mumbai
Php training100%placement-in-mumbai
 
Node.js
Node.jsNode.js
Node.js
 
Spark hands-on tutorial (rev. 002)
Spark hands-on tutorial (rev. 002)Spark hands-on tutorial (rev. 002)
Spark hands-on tutorial (rev. 002)
 

Último

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 

Último (20)

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

A History of PHP

  • 1. A History of PHP @laruence
  • 2. SELF INTRODUCTION ‣ Author of Yaf, Yar, Yac, Yaconf, Taint Projects ‣ Maintainer of Opcache, Msgpack, PHP-Lua Projects ‣ PHP Core Developer Since 2011 ‣ Zend Consultant Since 2013 ‣ One of PHP7 Core Developers: Dmitry Stogov, Xinchen Hui, Nikita Popov ‣ Chief Software Architect at Lianjia Since 2015
  • 3. W3Techs.com 100 ‣ Created in 1994 by Rasmus Lerdorf ‣ 20+ Years Programming Language ‣ Most Popular Web Service Program Language ‣ PHP7 is Released at 3 Dec 2015 ‣ Latest Version is PHP7.0.4 PHP
  • 5. ‣ Tim Berners-Lee ‣ 欧洲原⼦核研究会(CERN)电话簿 ‣ World Wide Web ‣ Web的⾸要任务就是向⼈们提供
 信息和信息服务 WWW(1989) Tim Berners-Lee Web ” WorldWideWeb”
  • 6. ‣ FrontPage ‣ None Javascript ‣ SSI : Server Side Includes Static Pages(1990~1993)
  • 7. ‣ CGI (Comm Getway Interface) ‣ CGI 1.0定义了程序和WebServer通信的接⼜ ‣ CGI ⼤部分使⽤C, Pascal等传统语⾔编写 ‣ 开发维护执⾏效率都很低 ‣ 曾经URL中随处可见的cgi-bin CGI(1993) #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #define ishex(x) (((x) >= '0' && (x) <= '9') || ((x) >= 'a' && (x) <= 'f') || ((x) >= 'A' && (x) <= 'F')) int htoi(char *s) { int value; char c; c = s[0]; if(isupper(c)) c = tolower(c); value=(c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16; c = s[1]; if(isupper(c)) c = tolower(c); value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10; return(value); } void main(int argc, char *argv[]) { char *params, *data, *dest, *s, *tmp; char *name, *age; puts("Content-type: text/htmlrn"); puts("<HTML><HEAD><TITLE>Form Example</TITLE></HEAD>"); puts("<BODY><H1>My Example Form</H1>"); puts("<FORM action="form.cgi" method="GET">"); puts("Name: <INPUT type="text" name="name">"); puts("Age: <INPUT type="text" name="age">"); puts("<BR><INPUT type="submit">"); puts("</FORM>"); data = getenv("QUERY_STRING"); if(data && *data) { params = data; dest = data; while(*data) { if(*data=='+') *dest=' '; else if(*data == '%' && ishex(*(data+1))&&ishex(*(data+2))) { *dest = (char) htoi(data + 1); data+=2; } else *dest = *data; data++; dest++; } *dest = '0'; s = strtok(params,"&"); do { tmp = strchr(s,'='); if(tmp) { *tmp = '0'; if(!strcmp(s,"name")) name = tmp+1; else if(!strcmp(s,"age")) age = tmp+1; } } while(s=strtok(NULL,"&")); printf("Hi %s, you are %s years oldn",name,age); } puts("</BODY></HTML>"); }
  • 8. ‣ PHP 1.0: Personal HomePage Tool ‣ Written in Perl ‣ Solves Problems ‣ ⾸创: HTML和脚本融合在⼀起 ‣ 开发维护效率⼤幅提升 PHP 1 (1994) <html><head><title>Form Example</title></head> <body><h1>My Example Form</h1> <form action="form.phtml" method="POST"> Name: <input type="text" name="name"> Age: <input type="text" name="age"> <br><input type="submit"> </form> <?if($name):?> Hi <?echo $name?>, you are <?echo $age?> years old <?endif?> </body></html>
  • 9. ‣ PHP 2.0: PHP/FI(Form Interpreter) ‣ Written in C ‣ 还只是简单的Form解析 ‣ 没有成熟的语法结构 ‣ 加⼊了对mSQL的⽀持 ‣ Netscape Navigator 2.0: LiveScript ‣ 1996: 50000个域名使⽤PHP PHP 2 (1995 ~ 1997)
  • 10. ‣ PHP: PHP: Hypertext Preprocessor ‣ Andi, Zeev重写了Parser ‣ 终于是⼀门语⾔了(较完备的语法结构) ‣ 最关键的: 弱类型, 可扩展的语⾔ PHP 3 (1998)
  • 11. ‣ Zend Engine 1.0 ‣ 基本的OO⽀持 ‣ 会话⽀持 ‣ 性能提升 ‣ 社区快速发展 PHP 4 (2000)
  • 12. ‣ Yahoo! 从YScript迁移到了PHP ‣ Rasmus Lerdorf 也⼊职Yahoo! PHP 4 (2002)
  • 13. ‣ Zend Engine 2.0 ‣ 更好的OO⽀持 ‣ PDO的引⼊ ‣ 性能提升 ‣ 社区快速成长 PHP 5 (2004)
  • 14. ‣ Use or Not Use Framework Framework?(2005~2008)
  • 16. ‣ HipHop ‣ JPHP ‣ Zephir ‣ Yaf ‣ Phalcon Performance(2010+)
  • 17. ‣ Secret Project by Zend ‣ Dmitry, 我 ‣ Opcache + LLVM ‣ Benchmark超过了HHVM但实际项⽬中看不到提升 ‣ 但是我们看到了⼀个新的⽅向 PHP5 JIT (2013)
  • 18. ‣ Zend Engine 3.0 ‣ Dmitry, 我, 以及Nikita ‣ 基于PHP5.5 Opcache JIT项⽬ ‣ 最⼤的⼀次重构, 历时⼀年多开发 ‣ PHP最⼤的性能提升版本 PHP 7 (2014)
  • 19. ‣ http://phpsadness.com/ ‣ http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/ ‣ http://blog.codinghorror.com/the-php-singularity/ ‣ http://webonastick.com/php.html ‣ http://aurelio.audero.it/blog/2014/02/05/why-people-think-php-sucks/ ‣ https://maurus.net/resources/programming-languages/php/ ‣ http://www.bitstorm.org/edwin/en/php/ ‣ https://teamtreehouse.com/forum/why-php-sucks ‣ https://www.reddit.com/r/PHP/.../why_do_so_many_developers_hate_php/ ‣ https://www.quora.com/.../Is-PHP-a-badly-designed-programming-language/ ‣ 还有很多… 有些⼈不喜欢PHP
  • 20. ‣ Haters Gonna Hate ‣ They Are True ‣ History is History ‣ Use The Right Tool ‣ If you like it, Ignore the hate, Get things done 语⾔只是⼯具 Shake if off - Taylor swift
  • 21. ‣ 易学习 ‣ 易安装 ‣ 社区庞⼤ ‣ 开源系统繁多 ‣ 容易找⼯作 :) PHP的优点
  • 22. ‣ 1000+开发⼈员 ‣ 近百万的使⽤者 ‣ 上千万的域名 ‣ …. 未来
  • 24. ‣ http://w3techs.com/technologies/overview/programming_language/all ‣ https://zh.wikipedia.org/wiki/Tim_Berners-Lee ‣ http://talks.php.net/confoo16#/2 ‣ http://www.slideshare.net/isotopp/20-years-of-php ‣ http://php.net/manual/en/history.php.php Links
  • 25. Q&A