2009-10-01 8 views
5

Mam pomysł na serwis internetowy, ale jestem bardzo nowy w programowaniu stron internetowych. Django wygląda świetnie i lubię coś, co mogę szybko odebrać. Mam duże doświadczenie w Haskell (i bardzo niewiele w pytonie) i chciałbym móc zacząć pisać niektóre z backendowych niezwiązanych z internetem rzeczy w moim ulubionym języku. Ale oczywiście nie chcę tego robić, jeśli kod haskell nie będzie użyteczny, jeśli przejdę z django.Czy mogę pisać komponenty w Haskell, które będą używane na stronie Django?

Spoglądałem na kilka frameworków sieci WWW: hApps wygląda na zbyt skomplikowane i nieudokumentowane, turbinado wygląda na przystępne, ale jest nieudokumentowane, itp. I myślę, że używając szeroko stosowanego framewru takiego jak django i mając dostęp do wielu kodów które mogę podłączyć, bardzo mi pomogą. Ale jestem bardzo otwarty na słuchanie o innych pomysłach na temat frameworków do wykorzystania lub innych opcji, które muszę w jakiś sposób wykorzystać Haskell.

Odpowiedz

4

To zależy od tego, co rozumiesz przez "serwis internetowy".

Jeśli masz na myśli typową aplikację internetową/stronę internetową, potrzebujesz łatwego interfejsu do bazy danych, generowania HTML, łatwej obsługi HTTP, obsługi sesji i formularzy. Naprawdę potrzebujesz do tego porządnego środowiska sieciowego.

Nie ma tam "dobrych" frameworków internetowych dla Haskella. (Dokonując tego osądu, uwzględniam takie czynniki, jak dokumentacja, społeczność, prawdopodobieństwo, że to nie będzie porzucane w roku na rok za bardziej nowe podejście itp.).

Jeśli masz na myśli coś znacznie mniejszego "webby", np. usługa, która zwraca dane map i nie potrzebuje większości tych funkcji, można by uzyskać coś takiego, jak Hack lub nawet Network.CGI, aby zapewnić podstawowy interfejs HTTP, na którym można byłoby zbudować usługę, działając z CGI/FastCGI. Jeśli potrzebujesz dynamicznej strony internetowej, możesz użyć czegoś podobnego do Django.

Można również napisać samodzielne pliki wykonywalne Haskell, które są wywoływane z kodu Django. Ale bezpośredni interakcja Pythona jest mało prawdopodobna/praktyczna.

+2

"Python <-> Współdziałanie Haskella jest mało prawdopodobne/praktyczne." - Z pewnością możliwe i praktyczne jest wywoływanie Pythona z Haskell - i przydatne, jeśli potrzebujesz biblioteki. Zobacz powiązanie hpaste2 z działkami. –

+0

Może się okazać, że to zaskakujące, ale nie każda aplikacja internetowa to "wypełnij formularz (i pokaż komunikaty o błędach sprawdzania poprawności) i umieść wynik w bazie danych SQL". – jrockway

+0

@dons: Wydaje mi się, że oryginalny plakat mówił o wywołaniu Haskella z Pythona. Ale nie byłem świadomy jakiegokolwiek interakcji Pythona <-> Haskella, poprawiam się :-) @ ĵrockway: uzgodniono - dlatego powiedziałem "typową" aplikację/stronę internetową. – spookylukey

1

Dowiedz się python, znajdziesz go ma wiele funkcji funkcjonalnych. Jest łatwy do odbioru i bardzo przyjemny.

Dobry wybór z Django.

+1

Co to są funkcje niefunkcjonujące Pythona? Poza antygrawitacją (http://xkcd.com/353) oczywiście. –

+1

@Dominic: Zdolność do mutowania obiektów. Możliwość ponownego wiązania zmiennych. Ograniczona obsługa funkcji lambda (jest to duża). Brak wsparcia dla komponowania i częściowo stosowania funkcji. – Chuck

3

Jeśli dopiero budujesz serwis internetowy, możesz napisać programy cgi lub fastcgi w Haskell, aby obsłużyć wywołania usługi internetowej.

+0

Czy jest to metoda, która będzie działać z django, czy alternatywa? Mam pewne zrozumienie CGI poza django, ale nie do końca jasne, jak działa django/CGI. – jberryman

+0

@jberryman: Nie wiem, jak Django pracuje z CGI, ale jeśli piszesz tylko serwis internetowy, nie jestem pewien, czy Django jest odpowiednim narzędziem do pracy. Jak mówi Spookylukey, jeśli masz na myśli standardową aplikację internetową, to jest coś innego niż to, o czym mówię. Jeśli chcesz tylko podać adresy URL, które zwracają dane, myślę, że nie powinieneś w ogóle używać Django. – Amok

1

Przejdź do F # i sprawdź NDjango - który jest portem Django napisanym w F #. Pełne ujawnienie: NDjango to mój projekt www.ndjango.com

+0

To jest interesująca propozycja, ale wiele osób nie jest tak gorących w językach MS. – Chuck

0

Jeśli chcesz, aby Haskell bezpośrednio rozmawiał z bazą danych, będziesz musiał zmodyfikować skrypt migracji bazy danych Django, aby również emitował kod modelu Haskella używając biblioteki takiej jak Yesod's Persistent.

Powiązane problemy