Witam,
pytanie brzmi jak dobrać technologię do projektu lub jakie kryteria należy rozpatrzyć przy wyborze technologii?
Temat brzmi trochę ogólnie, więc dokładnie mówiąc chodzi mi o wybór języka programowania. Zrobiłem sobie listę według własnych kryterii i na tej liście mam coś takiego:
- C#
- Java
- Python
- C++
- PHP
- JavaScript
PHP i JS oczywiście tylko i wyłącznie do zastosowań webowych (chociaż widziałem, że da się tworzyć aplikacje desktopowe, ale zostawmy to). Reszta nadaję się do aplikacji webowych i desktopowych.
Rozważmy najpierw aplikacje desktopowe. Teoretycznie C++ pod względem wydajności powinien tu wygrać, ale rozpatrzmy taki przypadek, że w C++ nie ma tzw. "odśmieczacza" (chyba jak dobrze pamiętam to garbage collection) i przykładowo jak przez przypadek gdzieś zapomnimy zwolnić pamięć w C++ to np. wydajność naszej aplikacji/ systemu może spaść. poza tym przykładowo nasz zespół czuje się lepiej w C# czy Javie czy Pythonie to chyba lepiej odpuścić sobie C++. Podsumowując, w powyższym przykładzie powinniśmy wybrać nie C++?
Teraz rozważmy Jave, C# i Pythona w kontekście aplikacji desktopowych. To może zacznijmy od C#. Po pierwsze jest to technologia nie darmowa (przynajmniej przy pierwszym projekcie), po drugie ściśle związana z Microsoftem, co wyklucza przenośność (chociaż już widziałem, że da się odpalać na linuxach, nie wiem jak na mac). Wydaje mi się, że tu jest fajnie jak mamy już konkretnego odbiorce naszego projektu, który wiem że na 100% będzie używał Windowsa.
Jeśli chodzi o przenośność to z mojej listy mamy Jave i Pythona. Szczerze mówiąc nie wiem co tu porównać, oprócz tego że oba są darmowe i podejrzewam że pod Jave jest więcej bibliotek i frameworków. Jeszcze pozostaje taki fakt, że Python można używać nie tylko na PVM, ale np. JVM.
Jeśli chodzi o aplikacje webowe to najpopularniejszy będzie php, jest darmowy i łatwy dostęp do hostingu. Myślę, że php można wykorzystać do prostych stronek i aplikacji webowych. JavaScript (może warto dodać, że korzystamy z np. modułu express w node.js i oczywiście samego node.js też), po pierwsze sami sobie piszemy serwer, na ogół te serwery są wydajniejsze od innych.
A Java i C# to chyba do bardziej jakichś rozbudowanych aplikacji firmowych (korporacyjnych). Problemu tu może być jeszcze serwer, który jest mniej dostępny od zwykłego Apache.
Tak na marginesie nie zauważyliście ostatnio, że zrobił się jakiś trend na języki z maszyną wirtualną i javascript, czy tylko mi się tak wydaje.
To tak co mi przyszło do głowy pod jakimi względami możemy wybierać technologię. Pytanie czy coś jeszcze byście dopisali?