Informatika2-2012/Eloadas13

A MathWikiből
(Változatok közti eltérés)
(Miért is jó a python)
(Miért is jó a python)
 
(egy szerkesztő 11 közbeeső változata nincs mutatva)
11. sor: 11. sor:
 
'''rengeteg felhasználása van'''
 
'''rengeteg felhasználása van'''
  
 +
==== Lassabb ====
 
Habár lassabban fut a Java vagy C nyelvnél mégis első esetben 3-5 míg második esetben akár '''8-10 szer kevesebb kóddal''' valósítható meg ugyanaz a program.
 
Habár lassabban fut a Java vagy C nyelvnél mégis első esetben 3-5 míg második esetben akár '''8-10 szer kevesebb kóddal''' valósítható meg ugyanaz a program.
 
Ebből következtetve inkább '''"ragasztó" nyelvnek''' mondják a python-t. Azaz hogy az időigényes feladatokat ellátó részeket C ill C++ nyelven míg a közöttük kialakított infrastruktúrát python nyelven valósítják meg.
 
Ebből következtetve inkább '''"ragasztó" nyelvnek''' mondják a python-t. Azaz hogy az időigényes feladatokat ellátó részeket C ill C++ nyelven míg a közöttük kialakított infrastruktúrát python nyelven valósítják meg.
20. sor: 21. sor:
 
* stb.
 
* stb.
  
 +
==== Hozzáférés ====
 
Python nyelvben nincs adat védelem. Azaz ha látunk egy komponenst, akkor minden elemét látjuk és módosíthatjuk is. :) Szoktál mondani: "a python felnőtt embereknek találták ki"
 
Python nyelvben nincs adat védelem. Azaz ha látunk egy komponenst, akkor minden elemét látjuk és módosíthatjuk is. :) Szoktál mondani: "a python felnőtt embereknek találták ki"
 
Ez ugye biztonságkritikus rendszereknél nem jöhet szóba, persze vannak technikák amikkel megfelelő interfészek mögé tudjuk rejteni alkalmazásunkat. Ilyen technika pl. az internet.
 
Ez ugye biztonságkritikus rendszereknél nem jöhet szóba, persze vannak technikák amikkel megfelelő interfészek mögé tudjuk rejteni alkalmazásunkat. Ilyen technika pl. az internet.
  
 
'''Így aztán internetes alkalmazások írására tökéletes.'''
 
'''Így aztán internetes alkalmazások írására tökéletes.'''
Erre több nagyszerű példát is találunk: [https://www.djangoproject.com/ Django], [http://plone.org/ Plone], [http://zope.org/ Zope]
+
Erre több nagyszerű példát is találunk:
 +
* [https://www.djangoproject.com/ Django]
 +
* [http://plone.org/ Plone]
 +
* [http://zope.org/ Zope]
 +
* stb.
  
 +
==== JIT ====
 
Továbbá JIT nyelv azaz "Just In Time" tehát tökéletes még ismeretlen elemeken működő programok írására. Minta ahogy a JavaScript a webes világ DOM-on való munkára a python a [http://usa.autodesk.com/maya/ Maya] nevű 3D kép és animáció készítő script nyelve.
 
Továbbá JIT nyelv azaz "Just In Time" tehát tökéletes még ismeretlen elemeken működő programok írására. Minta ahogy a JavaScript a webes világ DOM-on való munkára a python a [http://usa.autodesk.com/maya/ Maya] nevű 3D kép és animáció készítő script nyelve.
  
31. sor: 38. sor:
  
 
=== Példák ===
 
=== Példák ===
 +
 +
==== Projekt kezelő rendszer: [http://trac.edgewall.org/ Trac] ====
 +
A webalkalmazások egyik ékes példája. Célja hogy a szoftver fejlesztést megkönnyítse azzal hogy egy feladat kezelő rendszert adjon a fejlesztők alá, kiegészítve mindenféle csatolható alkalmazással.
 +
(Java-s nagy testvére a [http://www.atlassian.com/JIRA Jira] )
 +
 +
==== Build rendszerek ====
 +
* [http://code.google.com/p/waf/ waf]
 +
* [http://www.scons.org/ scons]
 +
 +
A építő rendszerek alapvetően azt a célt próbálják megvalósítani, hogy a fejlesztő válláról levegyék a terhet az automatizálható build (configuráció, fordítás), és deploy (telepítés) feladatokat elvégzésével.
 +
 +
==== GUI megvalósítások ====
 +
* [http://wiki.wxpython.org/How%20to%20Learn%20wxPython wxPython] - GUI toolkit
 +
** open-source
 +
** "platform független" (32-bit Microsoft Windows, legtöbb Unix vagy unix-szerű rendszer, és Macintosh OS X.
 +
* [http://docs.python.org/library/tkinter.html Tkinter] - python kapcsoló a Tk GUI-hoz
 +
 +
==== Játékok ====
 +
* [http://www.pygame.org/ pygame]
 +
* [http://kivy.org/ Kivy]
 +
 +
Mindkettő animációk-, rajzok-, képek-, ablakozó rendszerek-, események kezelését valósítják meg.
 +
A python kód hordozhatóságára építve a platformfüggetlenség az egyik fő céljuk. Utóbbi már a hordozható érintőképernyővel rendelkező eszközöket is képes kezelni, mint pl. iPad, Android tablet stb.
 +
 +
Egyszerű ablak megjelenítése egy gombbal a közepén.
 +
<python>
 +
from kivy.app import App
 +
from kivy.uix.button import Button
 +
 +
class TestApp(App):
 +
    def build(self):
 +
        return Button(text='Hello World')
 +
 +
TestApp().run()
 +
</python>
 +
 +
==== 3D ====
 +
OpenGL támogatás a PyOpenGL keresztül.
 +
* Így elérhető az OpenGL által nyújtotta lehetőségek python alatt is.
 +
* Kompatibilis más GUI rendszerekkel mint a wxPython, pyGTK stb.
 +
 +
==== Web framework ====
 +
* [https://www.djangoproject.com/ Django]
 +
Nagyon egyszerűen és tisztán használható webalkalmazás keretrendszer, sok-sok hasznos kiegészítővel.
 +
 +
* [https://developers.google.com/appengine/docs/python/tools/webapp/ webapp] és [https://developers.google.com/appengine/ Appengine]
 +
 +
Egyszerű webalkalmazás:
 +
<python>
 +
from google.appengine.ext import webapp
 +
from google.appengine.ext.webapp.util import run_wsgi_app
 +
 +
class MainPage(webapp.RequestHandler):
 +
    def get(self):
 +
        self.response.headers['Content-Type'] = 'text/plain'
 +
        self.response.out.write('Hello, webapp World!')
 +
 +
application = webapp.WSGIApplication(
 +
                                    [('/', MainPage)],
 +
                                    debug=True)
 +
 +
def main():
 +
    run_wsgi_app(application)
 +
 +
if __name__ == "__main__":
 +
    main()
 +
</python>
 +
 +
Server configuráció:
 +
<python>
 +
application: helloworld
 +
version: 1
 +
runtime: python
 +
api_version: 1
 +
 +
handlers:
 +
- url: /.*
 +
  script: helloworld.py
 +
</python>
 +
 +
==== Web alkalmazás szerver ====
 +
[http://wiki.zope.org/zope3/Zope3In30Minutes Zope]
 +
Egy komplex de jól használható alkalmazás szerver. Webes kezelőfelülettel és sok hasznos eszközzel.
 +
 +
Mit is takar egy alkalmazásszerver kifejezés:
 +
* olyan szerver ami gyűjtőként foglalja össze a webalkalmazásunkhoz felhasznált szolgáltatásokat
 +
** webalkalmazások
 +
** adatbázis szerver
 +
** stb.
 +
 +
Kialakítása olyan hogy segítse a részegységek közötti kommunikációt.
 +
 +
==== Web CMS ====
 +
[http://plone.org/ Plone]
 +
A Plone a Zope-ra épülő tartalom kezelő rendszer (CMS).
 +
A CMS egy wiki-nek kell elképzelni, csak a Plone kicsit komplexebb, saját weblap:
 +
* saját kinézettel
 +
* saját funkciókkal
 +
* saját adatmodellel
 +
* stb.
 +
 +
==== Egyéb példák ====
 +
[http://python.org/about/success/ Python success]

A lap jelenlegi, 2012. május 9., 00:29-kori változata

<-- vissza

Tartalomjegyzék

Körültekintés a nagyvilágban python szemmel

Miért is jó a python

A python alapvető célja a könnyű és széleskörű felhasználhatósága. Megalkotása során nem volt cél az optimalizált program futás vagy a kereskedelmi szoftver kívánalmainak teljesítése.

Így aztán önmagában nem alkalmas bonyolult számításokra vagy ellenőrzött csatornákon elérhető alkalmazások kialakítására.

Ha ezek nem, akkor mire igen: rengeteg felhasználása van

Lassabb

Habár lassabban fut a Java vagy C nyelvnél mégis első esetben 3-5 míg második esetben akár 8-10 szer kevesebb kóddal valósítható meg ugyanaz a program. Ebből következtetve inkább "ragasztó" nyelvnek mondják a python-t. Azaz hogy az időigényes feladatokat ellátó részeket C ill C++ nyelven míg a közöttük kialakított infrastruktúrát python nyelven valósítják meg.

Ebből adódóan:

  • automatizált test, build rendszerek írására tökéletes
  • saját cégen belüli eszközök
  • egyéni segéd programok
  • stb.

Hozzáférés

Python nyelvben nincs adat védelem. Azaz ha látunk egy komponenst, akkor minden elemét látjuk és módosíthatjuk is. :) Szoktál mondani: "a python felnőtt embereknek találták ki" Ez ugye biztonságkritikus rendszereknél nem jöhet szóba, persze vannak technikák amikkel megfelelő interfészek mögé tudjuk rejteni alkalmazásunkat. Ilyen technika pl. az internet.

Így aztán internetes alkalmazások írására tökéletes. Erre több nagyszerű példát is találunk:

JIT

Továbbá JIT nyelv azaz "Just In Time" tehát tökéletes még ismeretlen elemeken működő programok írására. Minta ahogy a JavaScript a webes világ DOM-on való munkára a python a Maya nevű 3D kép és animáció készítő script nyelve.

egy kis önfényezés

Példák

Projekt kezelő rendszer: Trac

A webalkalmazások egyik ékes példája. Célja hogy a szoftver fejlesztést megkönnyítse azzal hogy egy feladat kezelő rendszert adjon a fejlesztők alá, kiegészítve mindenféle csatolható alkalmazással. (Java-s nagy testvére a Jira )

Build rendszerek

A építő rendszerek alapvetően azt a célt próbálják megvalósítani, hogy a fejlesztő válláról levegyék a terhet az automatizálható build (configuráció, fordítás), és deploy (telepítés) feladatokat elvégzésével.

GUI megvalósítások

  • wxPython - GUI toolkit
    • open-source
    • "platform független" (32-bit Microsoft Windows, legtöbb Unix vagy unix-szerű rendszer, és Macintosh OS X.
  • Tkinter - python kapcsoló a Tk GUI-hoz

Játékok

Mindkettő animációk-, rajzok-, képek-, ablakozó rendszerek-, események kezelését valósítják meg. A python kód hordozhatóságára építve a platformfüggetlenség az egyik fő céljuk. Utóbbi már a hordozható érintőképernyővel rendelkező eszközöket is képes kezelni, mint pl. iPad, Android tablet stb.

Egyszerű ablak megjelenítése egy gombbal a közepén.

from kivy.app import App
from kivy.uix.button import Button
 
class TestApp(App):
    def build(self):
        return Button(text='Hello World')
 
TestApp().run()

3D

OpenGL támogatás a PyOpenGL keresztül.

  • Így elérhető az OpenGL által nyújtotta lehetőségek python alatt is.
  • Kompatibilis más GUI rendszerekkel mint a wxPython, pyGTK stb.

Web framework

Nagyon egyszerűen és tisztán használható webalkalmazás keretrendszer, sok-sok hasznos kiegészítővel.

Egyszerű webalkalmazás:

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
 
class MainPage(webapp.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!')
 
application = webapp.WSGIApplication(
                                     [('/', MainPage)],
                                     debug=True)
 
def main():
    run_wsgi_app(application)
 
if __name__ == "__main__":
    main()

Server configuráció:

application: helloworld
version: 1
runtime: python
api_version: 1
 
handlers:
- url: /.*
  script: helloworld.py

Web alkalmazás szerver

Zope Egy komplex de jól használható alkalmazás szerver. Webes kezelőfelülettel és sok hasznos eszközzel.

Mit is takar egy alkalmazásszerver kifejezés:

  • olyan szerver ami gyűjtőként foglalja össze a webalkalmazásunkhoz felhasznált szolgáltatásokat
    • webalkalmazások
    • adatbázis szerver
    • stb.

Kialakítása olyan hogy segítse a részegységek közötti kommunikációt.

Web CMS

Plone A Plone a Zope-ra épülő tartalom kezelő rendszer (CMS). A CMS egy wiki-nek kell elképzelni, csak a Plone kicsit komplexebb, saját weblap:

  • saját kinézettel
  • saját funkciókkal
  • saját adatmodellel
  • stb.

Egyéb példák

Python success

Személyes eszközök