SlideShare una empresa de Scribd logo
1 de 32
JavaScript
8 Reasons Every PHP Developer Should Love It




                             Boy Baukema
                          24 January 2008


                                               1
Welcome!




           2
               2
What I’ll cover

-   8 Reasons to love JavaScript
-   JavaScript to PHP
-   Availability
-   Lambda functions & closures
-   Libraries
-   Future
-   Resources
-   Q&A



                                   3
                                       3
Gmail?




         4
             4
jQuery? Prototype.js? Dojo?




                              5
                                  5
Quirksmode.org?




                  6
                      6
JavaScript Evangelist @




                          7
                              7
1. JavaScript is misunderstood




                                 8
                                     8
2. JavaScript IS the web




                           9
                               9
3. JavaScript is EVERYWHERE

     Do we really need graceful degradation?




                                               10
                                                    10
3. JavaScript is EVERYWHERE




                              11
                                   11
3. JavaScript is EVERYWHERE




                              12
                                   12
3. JavaScript is EVERYWHERE




                              13
                                   13
3. JavaScript is EVERYWHERE




                              14
                                   14
3. JavaScript is EVERYWHERE




                              15
                                   15
4. JavaScript has lambda functions




             VS




                                     16
                                          16
4. JavaScript has lambda functions




                     VS




                                     17
                                          17
4. JavaScript has lambda functions



PHP 4 >= 4.0.1, PHP 5




                                     18
                                          18
4. JavaScript has lambda functions



PHP 5.3




                                     19
                                          19
4. JavaScript has lambda functions




                                     20
                                          20
4. JavaScript has lambda functions




                                     21
                                          21
5. JavaScript has closures


Javascript closure example




                             22
                                  22
5. JavaScript has closures



PHP closure




                             23
                                  23
5. JavaScript has closures


PHP closure continued...




“I never thought I'd say this, but I miss closures.”
- Marco Tabini, php|architect

                                                       24
                                                            24
6. JavaScript is different




                             25
                                  25
7. Small and easy to extend




                              26
                                   26
7. Small and easy to extend
                                                                                                             strcmp
                        array_walk_recursive   echo                        intval          nl2br             stripos
     abs
                        asinh                  empty                       in_array        number_format     stripslashes
acos
                        asin                   end                         ip2long         octdec            strip_tags
addslashes
                        atanh                  exit                        isset           ord               stristr
array
                        atan                   explode                     is_array        parse_str         strlen
array_change_key_case
                        base64_decode          exp                         is_bool         pi                strnatcmp
array_chunk
                        base64_encode          filesize                    is_double       pow               strncasecmp
array_combine
                        basename               file                        is_finite       preg_quote        strpbrk
array_count_values
                        base_convert           file_exists                 is_float        printf            strpos
array_diff
                        bin2hex                file_get_contents           is_infinite     print_r           strrev
array_diff_assoc
                        bindec                 floatval                    is_integer      property_exists   strripos
array_diff_key
                        call_user_func         floor                       is_int          quotemeta         strrpos
array_fill
                        call_user_func_array   fmod                        is_long         rad2deg           strspn
array_fill_keys
                        ceil                   function_exists             is_nan          rand              strstr
array_filter
                        checkdate              func_get_args               is_null         range             strtolower
array_flip
                        chop                   func_get_arg                is_numeric      require           strtotime
array_keys
                        chr                    func_num_args               is_object       require_once      strtoupper
array_key_exists
                        chunk_split            getdate                     is_scalar       reset             str_ireplace
array_map
                        class_exists           getrandmax                  is_string       round             str_pad
array_merge
                        compact                gettype                     join            rsort             str_repeat
array_merge_recursive
                        constant               get_class                   krsort          rtrim             str_replace
array_pad
                        cosh                   get_defined_functions       ksort           serialize         str_rot13
array_pop
                        cos                    get_defined_vars            lcg_value       setcookie         str_split
array_product
                        count                  get_headers                 levenshtein     sha1              substr
array_push
                        count_chars            get_html_translation_tabl   log10           sha1_file         substr_count
array_rand
                        crc32                  e                           log             shuffle           tanh
array_reduce
                        create_function        get_included_files          long2ip         sinh              tan
array_reverse
                        date                   hexdec                      ltrim           sin               time
array_search
                        decbin                 htmlentities                max             sizeof            trim
array_shift
                        dechex                 htmlspecialchars            md5             sleep             ucfirst
array_slice
                        decoct                 htmlspecialchars_decode     md5_file        sort              ucwords
array_splice
                        defined                html_entity_decode          method_exists   soundex           unserialize
array_sum
                        define                 http_build_query            microtime       split             urldecode
array_unique
                        deg2rad                hypot                       min             sprintf           urlencode
array_unshift
                        die                    implode                     mktime          sqrt              utf8_decode
array_values
                        dirname                include                     mt_getrandmax   strcasecmp        utf8_encode
array_walk
                        each                   include_once                mt_rand         strchr            var_export
                                                                                                             wordwrap


                                                                                                                            27
                                                                                                                                 27
8. JavaScript is the future


       “JavaScript is probably the most important
       language in the world today.“
       - Steve Yegge (ex-Amazon, now Google)


       “Our JIT compiler generates code that is roughly
       equivalent to the performance
       of unoptimized C code (gcc -O0).”
       - Andreas Gal, Mozilla Tracemonkey dev




                                                      28
                                                           28
Learn JavaScript!




                    29
                         29
8 Reasons

1. JavaScript is misunderstood
2. JavaScript IS the web
3. JavaScript is EVERYWHERE
4. JavaScript has lambda functions
5. JavaScript has closures
6. JavaScript is different
7. Small and easy to extend
8. JavaScript is the future
                                 30
                                      30
Thank you!
http://tinyurl.com/ilovejs
                 Contact details:
                     Boy Baukema
                 boy@ibuildings.nl
      http://twitter.com/relaxnow




                                     31
Questions ?




              32
                   32

Más contenido relacionado

Destacado (7)

Vn Macro Jpn
Vn Macro JpnVn Macro Jpn
Vn Macro Jpn
 
July 2012
July 2012July 2012
July 2012
 
Community labs vn 2009 jpn
Community labs vn 2009 jpnCommunity labs vn 2009 jpn
Community labs vn 2009 jpn
 
Sync The World
Sync The WorldSync The World
Sync The World
 
Hehehehtest
HehehehtestHehehehtest
Hehehehtest
 
Verifying Drupal modules with OWASP ASVS 2014
Verifying Drupal modules with OWASP ASVS 2014Verifying Drupal modules with OWASP ASVS 2014
Verifying Drupal modules with OWASP ASVS 2014
 
20100324fujisankei
20100324fujisankei20100324fujisankei
20100324fujisankei
 

Similar a 8 Reasons PHP Developers Should Learn JavaScript

Construction Techniques For Domain Specific Languages
Construction Techniques For Domain Specific LanguagesConstruction Techniques For Domain Specific Languages
Construction Techniques For Domain Specific LanguagesThoughtWorks
 
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Nayden Gochev
 
Hacking with ruby2ruby
Hacking with ruby2rubyHacking with ruby2ruby
Hacking with ruby2rubyMarc Chung
 
The Enterprise Strikes Back
The Enterprise Strikes BackThe Enterprise Strikes Back
The Enterprise Strikes BackBurke Libbey
 
JRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMJRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMRaimonds Simanovskis
 
Scientific computing on jruby
Scientific computing on jrubyScientific computing on jruby
Scientific computing on jrubyPrasun Anand
 
Aprendendo solid com exemplos
Aprendendo solid com exemplosAprendendo solid com exemplos
Aprendendo solid com exemplosvinibaggio
 
How Scala code is expressed in the JVM
How Scala code is expressed in the JVMHow Scala code is expressed in the JVM
How Scala code is expressed in the JVMKoichi Sakata
 
Angular Weekend
Angular WeekendAngular Weekend
Angular WeekendTroy Miles
 
A Post About Analyzing PHP
A Post About Analyzing PHPA Post About Analyzing PHP
A Post About Analyzing PHPAndrey Karpov
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteDr Nic Williams
 
Javascriptbootcamp
JavascriptbootcampJavascriptbootcamp
Javascriptbootcamposcon2007
 
Fosdem2017 Scientific computing on Jruby
Fosdem2017  Scientific computing on JrubyFosdem2017  Scientific computing on Jruby
Fosdem2017 Scientific computing on JrubyPrasun Anand
 
Celery: The Distributed Task Queue
Celery: The Distributed Task QueueCelery: The Distributed Task Queue
Celery: The Distributed Task QueueRichard Leland
 
ChakraCore: analysis of JavaScript-engine for Microsoft Edge
ChakraCore: analysis of JavaScript-engine for Microsoft EdgeChakraCore: analysis of JavaScript-engine for Microsoft Edge
ChakraCore: analysis of JavaScript-engine for Microsoft EdgePVS-Studio
 

Similar a 8 Reasons PHP Developers Should Learn JavaScript (20)

Scilab vs matlab
Scilab vs matlabScilab vs matlab
Scilab vs matlab
 
Construction Techniques For Domain Specific Languages
Construction Techniques For Domain Specific LanguagesConstruction Techniques For Domain Specific Languages
Construction Techniques For Domain Specific Languages
 
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
 
Hacking with ruby2ruby
Hacking with ruby2rubyHacking with ruby2ruby
Hacking with ruby2ruby
 
The Enterprise Strikes Back
The Enterprise Strikes BackThe Enterprise Strikes Back
The Enterprise Strikes Back
 
JRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMJRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVM
 
Scientific computing on jruby
Scientific computing on jrubyScientific computing on jruby
Scientific computing on jruby
 
Aprendendo solid com exemplos
Aprendendo solid com exemplosAprendendo solid com exemplos
Aprendendo solid com exemplos
 
Intro to J Ruby
Intro to J RubyIntro to J Ruby
Intro to J Ruby
 
How Scala code is expressed in the JVM
How Scala code is expressed in the JVMHow Scala code is expressed in the JVM
How Scala code is expressed in the JVM
 
Angular Weekend
Angular WeekendAngular Weekend
Angular Weekend
 
Jvm internals
Jvm internalsJvm internals
Jvm internals
 
Profiling Ruby
Profiling RubyProfiling Ruby
Profiling Ruby
 
A Post About Analyzing PHP
A Post About Analyzing PHPA Post About Analyzing PHP
A Post About Analyzing PHP
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - Keynote
 
Javascriptbootcamp
JavascriptbootcampJavascriptbootcamp
Javascriptbootcamp
 
Fosdem2017 Scientific computing on Jruby
Fosdem2017  Scientific computing on JrubyFosdem2017  Scientific computing on Jruby
Fosdem2017 Scientific computing on Jruby
 
Celery: The Distributed Task Queue
Celery: The Distributed Task QueueCelery: The Distributed Task Queue
Celery: The Distributed Task Queue
 
EROSについて
EROSについてEROSについて
EROSについて
 
ChakraCore: analysis of JavaScript-engine for Microsoft Edge
ChakraCore: analysis of JavaScript-engine for Microsoft EdgeChakraCore: analysis of JavaScript-engine for Microsoft Edge
ChakraCore: analysis of JavaScript-engine for Microsoft Edge
 

Más de Boy Baukema

Security horrors
Security horrorsSecurity horrors
Security horrorsBoy Baukema
 
Tampering with JavaScript
Tampering with JavaScriptTampering with JavaScript
Tampering with JavaScriptBoy Baukema
 
Code by the sea: Web Application Security
Code by the sea: Web Application SecurityCode by the sea: Web Application Security
Code by the sea: Web Application SecurityBoy Baukema
 
Ibuildings ISO 27001 lunchbox
Ibuildings ISO 27001 lunchboxIbuildings ISO 27001 lunchbox
Ibuildings ISO 27001 lunchboxBoy Baukema
 
OWASP ASVS 3 - What's new for level 1?
OWASP ASVS 3 - What's new for level 1?OWASP ASVS 3 - What's new for level 1?
OWASP ASVS 3 - What's new for level 1?Boy Baukema
 
Secure Drupal, from start to finish
Secure Drupal, from start to finishSecure Drupal, from start to finish
Secure Drupal, from start to finishBoy Baukema
 
Security as a part of quality assurance
Security as a part of quality assuranceSecurity as a part of quality assurance
Security as a part of quality assuranceBoy Baukema
 
Recursive descent parsing
Recursive descent parsingRecursive descent parsing
Recursive descent parsingBoy Baukema
 
Dpc14 security as part of Quality Assurance
Dpc14   security as part of Quality AssuranceDpc14   security as part of Quality Assurance
Dpc14 security as part of Quality AssuranceBoy Baukema
 
SURFconext and Mobile
SURFconext and MobileSURFconext and Mobile
SURFconext and MobileBoy Baukema
 
WebAppSec @ Ibuildings in 2014
WebAppSec @ Ibuildings in 2014WebAppSec @ Ibuildings in 2014
WebAppSec @ Ibuildings in 2014Boy Baukema
 
Let's build a parser!
Let's build a parser!Let's build a parser!
Let's build a parser!Boy Baukema
 

Más de Boy Baukema (12)

Security horrors
Security horrorsSecurity horrors
Security horrors
 
Tampering with JavaScript
Tampering with JavaScriptTampering with JavaScript
Tampering with JavaScript
 
Code by the sea: Web Application Security
Code by the sea: Web Application SecurityCode by the sea: Web Application Security
Code by the sea: Web Application Security
 
Ibuildings ISO 27001 lunchbox
Ibuildings ISO 27001 lunchboxIbuildings ISO 27001 lunchbox
Ibuildings ISO 27001 lunchbox
 
OWASP ASVS 3 - What's new for level 1?
OWASP ASVS 3 - What's new for level 1?OWASP ASVS 3 - What's new for level 1?
OWASP ASVS 3 - What's new for level 1?
 
Secure Drupal, from start to finish
Secure Drupal, from start to finishSecure Drupal, from start to finish
Secure Drupal, from start to finish
 
Security as a part of quality assurance
Security as a part of quality assuranceSecurity as a part of quality assurance
Security as a part of quality assurance
 
Recursive descent parsing
Recursive descent parsingRecursive descent parsing
Recursive descent parsing
 
Dpc14 security as part of Quality Assurance
Dpc14   security as part of Quality AssuranceDpc14   security as part of Quality Assurance
Dpc14 security as part of Quality Assurance
 
SURFconext and Mobile
SURFconext and MobileSURFconext and Mobile
SURFconext and Mobile
 
WebAppSec @ Ibuildings in 2014
WebAppSec @ Ibuildings in 2014WebAppSec @ Ibuildings in 2014
WebAppSec @ Ibuildings in 2014
 
Let's build a parser!
Let's build a parser!Let's build a parser!
Let's build a parser!
 

Último

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

8 Reasons PHP Developers Should Learn JavaScript

  • 1. JavaScript 8 Reasons Every PHP Developer Should Love It Boy Baukema 24 January 2008 1
  • 2. Welcome! 2 2
  • 3. What I’ll cover - 8 Reasons to love JavaScript - JavaScript to PHP - Availability - Lambda functions & closures - Libraries - Future - Resources - Q&A 3 3
  • 4. Gmail? 4 4
  • 8. 1. JavaScript is misunderstood 8 8
  • 9. 2. JavaScript IS the web 9 9
  • 10. 3. JavaScript is EVERYWHERE Do we really need graceful degradation? 10 10
  • 11. 3. JavaScript is EVERYWHERE 11 11
  • 12. 3. JavaScript is EVERYWHERE 12 12
  • 13. 3. JavaScript is EVERYWHERE 13 13
  • 14. 3. JavaScript is EVERYWHERE 14 14
  • 15. 3. JavaScript is EVERYWHERE 15 15
  • 16. 4. JavaScript has lambda functions VS 16 16
  • 17. 4. JavaScript has lambda functions VS 17 17
  • 18. 4. JavaScript has lambda functions PHP 4 >= 4.0.1, PHP 5 18 18
  • 19. 4. JavaScript has lambda functions PHP 5.3 19 19
  • 20. 4. JavaScript has lambda functions 20 20
  • 21. 4. JavaScript has lambda functions 21 21
  • 22. 5. JavaScript has closures Javascript closure example 22 22
  • 23. 5. JavaScript has closures PHP closure 23 23
  • 24. 5. JavaScript has closures PHP closure continued... “I never thought I'd say this, but I miss closures.” - Marco Tabini, php|architect 24 24
  • 25. 6. JavaScript is different 25 25
  • 26. 7. Small and easy to extend 26 26
  • 27. 7. Small and easy to extend strcmp array_walk_recursive echo intval nl2br stripos abs asinh empty in_array number_format stripslashes acos asin end ip2long octdec strip_tags addslashes atanh exit isset ord stristr array atan explode is_array parse_str strlen array_change_key_case base64_decode exp is_bool pi strnatcmp array_chunk base64_encode filesize is_double pow strncasecmp array_combine basename file is_finite preg_quote strpbrk array_count_values base_convert file_exists is_float printf strpos array_diff bin2hex file_get_contents is_infinite print_r strrev array_diff_assoc bindec floatval is_integer property_exists strripos array_diff_key call_user_func floor is_int quotemeta strrpos array_fill call_user_func_array fmod is_long rad2deg strspn array_fill_keys ceil function_exists is_nan rand strstr array_filter checkdate func_get_args is_null range strtolower array_flip chop func_get_arg is_numeric require strtotime array_keys chr func_num_args is_object require_once strtoupper array_key_exists chunk_split getdate is_scalar reset str_ireplace array_map class_exists getrandmax is_string round str_pad array_merge compact gettype join rsort str_repeat array_merge_recursive constant get_class krsort rtrim str_replace array_pad cosh get_defined_functions ksort serialize str_rot13 array_pop cos get_defined_vars lcg_value setcookie str_split array_product count get_headers levenshtein sha1 substr array_push count_chars get_html_translation_tabl log10 sha1_file substr_count array_rand crc32 e log shuffle tanh array_reduce create_function get_included_files long2ip sinh tan array_reverse date hexdec ltrim sin time array_search decbin htmlentities max sizeof trim array_shift dechex htmlspecialchars md5 sleep ucfirst array_slice decoct htmlspecialchars_decode md5_file sort ucwords array_splice defined html_entity_decode method_exists soundex unserialize array_sum define http_build_query microtime split urldecode array_unique deg2rad hypot min sprintf urlencode array_unshift die implode mktime sqrt utf8_decode array_values dirname include mt_getrandmax strcasecmp utf8_encode array_walk each include_once mt_rand strchr var_export wordwrap 27 27
  • 28. 8. JavaScript is the future “JavaScript is probably the most important language in the world today.“ - Steve Yegge (ex-Amazon, now Google) “Our JIT compiler generates code that is roughly equivalent to the performance of unoptimized C code (gcc -O0).” - Andreas Gal, Mozilla Tracemonkey dev 28 28
  • 30. 8 Reasons 1. JavaScript is misunderstood 2. JavaScript IS the web 3. JavaScript is EVERYWHERE 4. JavaScript has lambda functions 5. JavaScript has closures 6. JavaScript is different 7. Small and easy to extend 8. JavaScript is the future 30 30
  • 31. Thank you! http://tinyurl.com/ilovejs Contact details: Boy Baukema boy@ibuildings.nl http://twitter.com/relaxnow 31
  • 32. Questions ? 32 32