SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Vybrané témy implementácie
    webových aplikácií

         JÁN SUCHAL
Ktorý implementačný jazyk & framework?

 Programátor
   Rýchlosť (výpočtová, vývojová)
   Podpora (dokumentácia, knižnice, pluginy, IDE, komunita)
   Prehľadnosť, intuitívnosť (štandardy, konvencie)
   Koľko mi zaplatia a kde?

 Manažér
   Koľko to stojí? (licencie, nástroje...)
   Koľko to ušetrí náklady? (menej serverov?, menej ľudí?)
   Koľko ľudí to vie? (ako rýchlo Ťa viem nahradiť?)

 Zákazník
   ???
“Rýchlosť”




http://shootout.alioth.debian.org/
“Popularita”
“Popularita”




http://news.ycombinator.com/item?id=3746692
“Popularita”




http://news.ycombinator.com/item?id=3746692
Kde mi za to zaplatia?

 profesia.sk
   “java” – 288 ponúk

   “php” – 131 ponúk

   “c#” – 114 ponúk

   “python” – 26 ponúk

   “ruby” – 7 ponúk



     “j2ee” – 110 ponúk
     “asp” – 59 ponúk
     “rails” – 7 ponúk
     “django” – 0 ponúk
Kde mi za to zaplatia?
Implementačné jazyky

 LISP, Clojure                                   homoikonicita

                                                  mixiny, bloky, OO,
 Ruby, Python                                     otvorené triedy




                              Produktivita * Y
 PHP                                             dynamické typovanie
                  Výkon * X
                                                  GC, objekty + primitívne
 Java, C#                                         typy

 C++, C                                          štruktúry, funkcie,
                                                   “objekty”, knižnice

 Assembler                                       inštrukcie
Prehľad veľkých webaplikácií

 Wikipedia – PHP, MySQL
 YouTube – Python, MySQL
 Facebook – PHP, MySQL, HBase
 Twitter – Ruby on Rails, MySQL, Scala
 Groupon – Ruby on Rails, MySQL
 Foursquare – Scala, MongoDB
 Bit.ly – Python, Tornado, MySQL, MongoDB
 LinkedIn – Java, Spring MVC, Ruby on Rails
 StackOverflow – C#, ASP.NET
 GetPrismatic - Clojure

http://www.quora.com/What-are-the-programming-languages-and-frameworks-the-top-NYC-startups-are-using
Frameworky (Django vs. Rails 2.x)




http://www.scribd.com/doc/121814/RailsDjango-Comparison
Frameworky na webaplikácie

 Event-based vs. MVC
    “desktopové” vs. “RESTful”
 Perzistencia
    Adaptéry (MySQL, PostgreSQL, Oracle, MSSQL...)
    Objektovo-relačné mapovanie
    NoSQL databázy (dokumentové, grafové, key-value)
 Bezpečnosť
    SQLi, XSS, CSRF, cookie tampering
 Šablónovací jazyk
    generovanie formulárov, formátovanie...
 AJAX
 Validácia
    Server + klient
Frameworky na webaplikácie

 Testovanie
   unit testy, integračné testovanie, testovanie s db, záťažové testy

 Automatizácia
   Generátory kódu (modely, kontrolery, testy)
   Automatické administračné rozhranie
   Inštalácia závislostí aplikácie

 Cachovanie
 Podpora zmien databázy počas vývoja
 Podpora v editoroch a IDE
 Komunita (vývoj, fóra, biznis)
Zhrnutie

 Menej výkonný jazyk > dlhší vývoj
   Rýchla verzia 1.0, úzke hrdlo sa prepíše do rýchlejšieho jazyka



 Trend polyglot programovania
   Aplikácie používajúce niekoľko jazykov sú čoraz bežnejšie

   Použite najlepší nástroj/jazyk/framework na daný problém



 “Koľko jazykov vieš toľko krát si programátorom.”

Weitere ähnliche Inhalte

Ähnlich wie Ako si vybrať programovací jazyk a framework?

Node.js @ Rubyslava
Node.js @ RubyslavaNode.js @ Rubyslava
Node.js @ RubyslavaIvan Srba
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JSsrigi
 
AppMonitor Insight Edition
AppMonitor Insight EditionAppMonitor Insight Edition
AppMonitor Insight EditionAdam Lieskovsky
 
BarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na WebBarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na WebJuraj Michálek
 
Samuel Hopko & Daniel Rajčan - Cloud Computing
Samuel Hopko & Daniel Rajčan - Cloud ComputingSamuel Hopko & Daniel Rajčan - Cloud Computing
Samuel Hopko & Daniel Rajčan - Cloud ComputingDavinci software
 
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...Catana0605
 
Zváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineZváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineJuraj Michálek
 
Čo sú to webové aplikácie ?
Čo sú to webové aplikácie ?Čo sú to webové aplikácie ?
Čo sú to webové aplikácie ?Drahoslav Madar
 
Prezentácia: Ruby on RAils
Prezentácia: Ruby on RAilsPrezentácia: Ruby on RAils
Prezentácia: Ruby on RAilsguest3604661
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]David Lukac
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]David Lukac
 
Libraries and tools for C++
Libraries and tools for C++Libraries and tools for C++
Libraries and tools for C++Juraj Michálek
 
Deltacloud Presentation OpenHouse 2010
Deltacloud Presentation OpenHouse 2010Deltacloud Presentation OpenHouse 2010
Deltacloud Presentation OpenHouse 2010Michal Fojtik
 
DAWINCI / Ján Grman
DAWINCI / Ján Grman DAWINCI / Ján Grman
DAWINCI / Ján Grman Infodays
 

Ähnlich wie Ako si vybrať programovací jazyk a framework? (20)

Node.js @ Rubyslava
Node.js @ RubyslavaNode.js @ Rubyslava
Node.js @ Rubyslava
 
Ro r
Ro rRo r
Ro r
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JS
 
Tastypie
TastypieTastypie
Tastypie
 
AppMonitor Insight Edition
AppMonitor Insight EditionAppMonitor Insight Edition
AppMonitor Insight Edition
 
BarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na WebBarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na Web
 
Analytika
AnalytikaAnalytika
Analytika
 
Samuel Hopko & Daniel Rajčan - Cloud Computing
Samuel Hopko & Daniel Rajčan - Cloud ComputingSamuel Hopko & Daniel Rajčan - Cloud Computing
Samuel Hopko & Daniel Rajčan - Cloud Computing
 
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
 
Zváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineZváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App Engine
 
Mdsd
MdsdMdsd
Mdsd
 
Čo sú to webové aplikácie ?
Čo sú to webové aplikácie ?Čo sú to webové aplikácie ?
Čo sú to webové aplikácie ?
 
Prezentácia: Ruby on RAils
Prezentácia: Ruby on RAilsPrezentácia: Ruby on RAils
Prezentácia: Ruby on RAils
 
Cv_sk
Cv_skCv_sk
Cv_sk
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]
 
Libraries and tools for C++
Libraries and tools for C++Libraries and tools for C++
Libraries and tools for C++
 
Flask vs django
Flask vs djangoFlask vs django
Flask vs django
 
Deltacloud Presentation OpenHouse 2010
Deltacloud Presentation OpenHouse 2010Deltacloud Presentation OpenHouse 2010
Deltacloud Presentation OpenHouse 2010
 
DAWINCI / Ján Grman
DAWINCI / Ján Grman DAWINCI / Ján Grman
DAWINCI / Ján Grman
 

Mehr von Jano Suchal

Improving code quality
Improving code qualityImproving code quality
Improving code qualityJano Suchal
 
Beyond search queries
Beyond search queriesBeyond search queries
Beyond search queriesJano Suchal
 
Rank all the things!
Rank all the things!Rank all the things!
Rank all the things!Jano Suchal
 
Bonetics: Mastering Puppet Workshop
Bonetics: Mastering Puppet WorkshopBonetics: Mastering Puppet Workshop
Bonetics: Mastering Puppet WorkshopJano Suchal
 
Peter Mihalik: Puppet
Peter Mihalik: PuppetPeter Mihalik: Puppet
Peter Mihalik: PuppetJano Suchal
 
Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Jano Suchal
 
SQL: Query optimization in practice
SQL: Query optimization in practiceSQL: Query optimization in practice
SQL: Query optimization in practiceJano Suchal
 
Garelic: Google Analytics as App Performance monitoring
Garelic: Google Analytics as App Performance monitoringGarelic: Google Analytics as App Performance monitoring
Garelic: Google Analytics as App Performance monitoringJano Suchal
 
Miroslav Šimulčík: Temporálne databázy
Miroslav Šimulčík: Temporálne databázyMiroslav Šimulčík: Temporálne databázy
Miroslav Šimulčík: Temporálne databázyJano Suchal
 
Vojtech Rinik: Internship v USA - moje skúsenosti
Vojtech Rinik: Internship v USA - moje skúsenostiVojtech Rinik: Internship v USA - moje skúsenosti
Vojtech Rinik: Internship v USA - moje skúsenostiJano Suchal
 
Petr Joachim: Redis na Super.cz
Petr Joachim: Redis na Super.czPetr Joachim: Redis na Super.cz
Petr Joachim: Redis na Super.czJano Suchal
 
Metaprogramovanie #1
Metaprogramovanie #1Metaprogramovanie #1
Metaprogramovanie #1Jano Suchal
 
PostgreSQL: Advanced features in practice
PostgreSQL: Advanced features in practicePostgreSQL: Advanced features in practice
PostgreSQL: Advanced features in practiceJano Suchal
 
elasticsearch - advanced features in practice
elasticsearch - advanced features in practiceelasticsearch - advanced features in practice
elasticsearch - advanced features in practiceJano Suchal
 
Postobjektové programovanie v Ruby
Postobjektové programovanie v RubyPostobjektové programovanie v Ruby
Postobjektové programovanie v RubyJano Suchal
 

Mehr von Jano Suchal (17)

Datanest 3.0
Datanest 3.0Datanest 3.0
Datanest 3.0
 
Improving code quality
Improving code qualityImproving code quality
Improving code quality
 
Beyond search queries
Beyond search queriesBeyond search queries
Beyond search queries
 
Rank all the things!
Rank all the things!Rank all the things!
Rank all the things!
 
Bonetics: Mastering Puppet Workshop
Bonetics: Mastering Puppet WorkshopBonetics: Mastering Puppet Workshop
Bonetics: Mastering Puppet Workshop
 
Peter Mihalik: Puppet
Peter Mihalik: PuppetPeter Mihalik: Puppet
Peter Mihalik: Puppet
 
Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3
 
SQL: Query optimization in practice
SQL: Query optimization in practiceSQL: Query optimization in practice
SQL: Query optimization in practice
 
Garelic: Google Analytics as App Performance monitoring
Garelic: Google Analytics as App Performance monitoringGarelic: Google Analytics as App Performance monitoring
Garelic: Google Analytics as App Performance monitoring
 
Miroslav Šimulčík: Temporálne databázy
Miroslav Šimulčík: Temporálne databázyMiroslav Šimulčík: Temporálne databázy
Miroslav Šimulčík: Temporálne databázy
 
Vojtech Rinik: Internship v USA - moje skúsenosti
Vojtech Rinik: Internship v USA - moje skúsenostiVojtech Rinik: Internship v USA - moje skúsenosti
Vojtech Rinik: Internship v USA - moje skúsenosti
 
Čo po GAMČI?
Čo po GAMČI?Čo po GAMČI?
Čo po GAMČI?
 
Petr Joachim: Redis na Super.cz
Petr Joachim: Redis na Super.czPetr Joachim: Redis na Super.cz
Petr Joachim: Redis na Super.cz
 
Metaprogramovanie #1
Metaprogramovanie #1Metaprogramovanie #1
Metaprogramovanie #1
 
PostgreSQL: Advanced features in practice
PostgreSQL: Advanced features in practicePostgreSQL: Advanced features in practice
PostgreSQL: Advanced features in practice
 
elasticsearch - advanced features in practice
elasticsearch - advanced features in practiceelasticsearch - advanced features in practice
elasticsearch - advanced features in practice
 
Postobjektové programovanie v Ruby
Postobjektové programovanie v RubyPostobjektové programovanie v Ruby
Postobjektové programovanie v Ruby
 

Ako si vybrať programovací jazyk a framework?

  • 1. Vybrané témy implementácie webových aplikácií JÁN SUCHAL
  • 2. Ktorý implementačný jazyk & framework?  Programátor  Rýchlosť (výpočtová, vývojová)  Podpora (dokumentácia, knižnice, pluginy, IDE, komunita)  Prehľadnosť, intuitívnosť (štandardy, konvencie)  Koľko mi zaplatia a kde?  Manažér  Koľko to stojí? (licencie, nástroje...)  Koľko to ušetrí náklady? (menej serverov?, menej ľudí?)  Koľko ľudí to vie? (ako rýchlo Ťa viem nahradiť?)  Zákazník  ???
  • 7. Kde mi za to zaplatia?  profesia.sk  “java” – 288 ponúk  “php” – 131 ponúk  “c#” – 114 ponúk  “python” – 26 ponúk  “ruby” – 7 ponúk  “j2ee” – 110 ponúk  “asp” – 59 ponúk  “rails” – 7 ponúk  “django” – 0 ponúk
  • 8. Kde mi za to zaplatia?
  • 9. Implementačné jazyky  LISP, Clojure  homoikonicita  mixiny, bloky, OO,  Ruby, Python otvorené triedy Produktivita * Y  PHP  dynamické typovanie Výkon * X  GC, objekty + primitívne  Java, C# typy  C++, C  štruktúry, funkcie, “objekty”, knižnice  Assembler  inštrukcie
  • 10. Prehľad veľkých webaplikácií  Wikipedia – PHP, MySQL  YouTube – Python, MySQL  Facebook – PHP, MySQL, HBase  Twitter – Ruby on Rails, MySQL, Scala  Groupon – Ruby on Rails, MySQL  Foursquare – Scala, MongoDB  Bit.ly – Python, Tornado, MySQL, MongoDB  LinkedIn – Java, Spring MVC, Ruby on Rails  StackOverflow – C#, ASP.NET  GetPrismatic - Clojure http://www.quora.com/What-are-the-programming-languages-and-frameworks-the-top-NYC-startups-are-using
  • 11. Frameworky (Django vs. Rails 2.x) http://www.scribd.com/doc/121814/RailsDjango-Comparison
  • 12. Frameworky na webaplikácie  Event-based vs. MVC  “desktopové” vs. “RESTful”  Perzistencia  Adaptéry (MySQL, PostgreSQL, Oracle, MSSQL...)  Objektovo-relačné mapovanie  NoSQL databázy (dokumentové, grafové, key-value)  Bezpečnosť  SQLi, XSS, CSRF, cookie tampering  Šablónovací jazyk  generovanie formulárov, formátovanie...  AJAX  Validácia  Server + klient
  • 13. Frameworky na webaplikácie  Testovanie  unit testy, integračné testovanie, testovanie s db, záťažové testy  Automatizácia  Generátory kódu (modely, kontrolery, testy)  Automatické administračné rozhranie  Inštalácia závislostí aplikácie  Cachovanie  Podpora zmien databázy počas vývoja  Podpora v editoroch a IDE  Komunita (vývoj, fóra, biznis)
  • 14. Zhrnutie  Menej výkonný jazyk > dlhší vývoj  Rýchla verzia 1.0, úzke hrdlo sa prepíše do rýchlejšieho jazyka  Trend polyglot programovania  Aplikácie používajúce niekoľko jazykov sú čoraz bežnejšie  Použite najlepší nástroj/jazyk/framework na daný problém  “Koľko jazykov vieš toľko krát si programátorom.”