Temat: Python do JavaScript?
Myślę, że w tym wypadku macie rację, wciągając ciężkie obliczenia, czy też operacje na serwer, bo nie sądzę by był to projekt, w którym jest chęć testować różne świeże architektury. Nie uważam jednak by takie podejście było jedynym słusznym zawsze.
Przede wszystkim należy sobie zdać sprawę z tego, że JS w niektórych przeglądarkach jest już zaskakująco wydajny (porównywalny, bądź wydajniejszy od typowych Ruby, Python, czy PHP - polecam
http://devcamps.pl/topics/perf_io_cpu, czy
http://devcamps.pl/topics/perf_templates [chociaż tutaj został wybrany bardzo słaby EJS dla Node'a, co wypaczyło wyniki]). Z drugiej strony nasz serwer też ma określoną moc i jeśli na horyzoncie pojawia nam się aspekt jego przeciążenia, to warto pomyśleć o skorzystaniu z CPU i GPU (!) klienta. Oczywiście trzeba wiedzieć jak pisać takie obliczenia w sposób nieblokujący - kłaniają się WebWorkery, bądź też po prostu zapętlony setTimeout().
Pojawia się jednak problem - co ze starszymi przeglądarkami, IE i mobile'ami? Otóż, fajnie byłoby dla nich wykonać obliczenia na serwerze. Nie lubimy się jednak powtarzać, więc kod chcielibyśmy napisać raz i koniec. Oczywiście możliwy jest przypadek, że do sportowania jest 20 linii matematycznych obliczeń, które metodą kopiego pejsta można przenieść z Pythona do JS. Załóżmy jednak, że chcemy przenieść system template'owania (operacje na DOM itp.). Napiszmy to w JS dla klienta i... odpalmy na serwerze dla śmIEciowych przeglądarek, bądź słabszych urządzeń. Taką architekturę, czy też bardziej warstwę nazywa się ostatnio middle-endem (nie mylić z middleware).
W przypadku opisanym w tym topicu można byłoby po prosty napisać algorytmy w JS (w tym wypadku, to oczywiście duplikacja pracy, ale założenie jest, że startujemy od zera ;), postawić je jako usługę w Nodzie (w uproszczeniu JS-owy backend) i ten sam kod mieć w przeglądarce. Gdyby backend Pythonowy rozpoznał, że gada z wolnym klientem, to mógłby odpytywać ten serwis Node'owy, bądź jeszcze prościej - klient mógłby to robić sam (pojawia się problem Same Origin Policy, ale są rozwiązania).
W każdym razie - przestrzegałbym przed przedwczesnym skreślaniem JS i CPU klienta jako dostępnej dla nas mocy obliczeniowej.
PS. prowadziłem kilka tygodni temu szkolenie z Middle-end w oparciu o Node'a. Gdyby kogoś interesowało - moja prezentacja związana z kilkoma aspektami serwerowego JS i samym middle-endem
http://reinmar.github.com/dm-middle-end/pres/