Szerintetek képes a Python + Cython helyettesíteni a backend fejlesztéshez használt nyelvek nagy részét?
Érvek:
- Pythonnal rendkívül gyors a fejlesztés
- Az egyik legérettebb nyelvről van szó. Kevés olyan nyelv van, amelyhez ennyi csomag létezne
- A generator és generator comprehension nagyon hasznos nyelvi feature-ök alacsony memória használatú alkalmazások fejlesztésére
- A Cython segítségével a hotspotok gyakorlatilag ugyanúgy optimalizálhatóak, mint C nyelv használatával - sőt, a már optimálisan megvalósított beépített szerkezetek miatt erre még bővebb eszközkészlet is áll rendelkezésre
- Már meglévő C/C++ kódbázis könnyedén hasznosítható, sőt, akár Java / .NET szoftverekkel is integrálható
Ellenérvek:
- viszonylag kevés fejlesztő ismeri professzionális szinten a Python nyelvet
- sajnos sok ügyfél esetében egy PHP-t nem tud helyettesíteni, mivel sokan ragaszkodnak a PHP környezetez (bármily rossz is legyen az), illetve meglévő PHP kódbázisba sem lehet könnyen Python modulokat integrálni
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"De mi van, ha készítened kell egy HumanoidRobot osztályt is, ami szintén tud beszélni? Ilyenkor persze készíthetsz egy Beszélő absztrakt osztályt, amiből az Ember és a HumanoidRobot származik, viszont ez egyszeres öröklődéssel csak akkor működik, ha nincsenek egymásnak ellentmondó metódusok. Például a Séta, ami a láb nélküli HumanoidRobot subclassekre nem vonatkozik. Ezt már nem lehet pusztán egyszeres öröklődéssel megoldani."
Na de miért akarnál egy Séta metódust a Beszélő ősosztályba rakni?
A Beszélőben legyen simán egy Beszél, az abból származó Emberbe meg beleraksz egy Séta-t, oszt' csókolom. A robot úgysem sétál..
Ha a Beszélő-be rakod a Sétát, az egyrészt logikailag is értelmetlen lenne, mert abból, hogy valami Beszél, nem következik, hogy Sétálni is képes, másrészt meg sérti a Single Responsibility elvet is.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"Ez a dolog kezd átmenni hitvitába"
Szerintem egyáltalán nem.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"Na de miért akarnál egy Séta metódust a Beszélő ősosztályba rakni?
A Beszélőben legyen simán egy Beszél, az abból származó Emberbe meg beleraksz egy Séta-t, oszt' csókolom. A robot úgysem sétál..
Ha a Beszélő-be rakod a Sétát, az egyrészt logikailag is értelmetlen lenne, mert abból, hogy valami Beszél, nem következik, hogy Sétálni is képes, másrészt meg sérti a Single Responsibility elvet is."
Félreérthetően fogalmaztam.
A Séta egy külön Sétáló osztályhoz tartozik, amivel rendelkeznie kell a HumanoidRobot és az Ember osztályoknak, de mondjuk a LábnélküliHumanoidRobot osztálynak nem. Itt ugye az a megoldás Java-ban pl., hogy a sétát és a beszédet interface-el kényszeríted ki, ami kódduplikációhoz vezet.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Na így már érthető.
Hát nem nem véletlenül van benne minden OOP design-nal kapcsolatos írásban/könyvben rögtön a legelején, hogy "favor composition over inheritance" :)
Alkalmazni kell, és akkor nincsenek ilyen problémák :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!