Uczyłem się programowania z Pythonem i C#. Poszedłem do pracy gdzie wybrałem sobie C++ (jako wyzwanie: terminy oddawania projektów motywują do nauki :P). Język taki czy siaki: zawsze wszystko wyglądało tak samo - mam jakiegoś kreatora GUI, układam sobie puzzle, łączę z bazą, oprogramowuję funkcje i aplikacja okienkowa gotowa. ;-) Moje marzenie napisania gry także jest do spełnienia z C++ więc szafa gra, mam swój język i jest dobrze... ale zawsze fascynowało mnie programowanie funkcyjne. Kiedy zaczynałem się uczyć C#, zobaczyłem coś takiego jak F# - nie wiedziałem wtedy o co chodzi, a samouczek mnie przeraził ale fascynacja gdzieś tam na dnie mojej duszy się zakleszczyła... i jest tam do dzisiaj z tym, że teraz wydaje mi się, że byłbym w stanie taki samouczek przyswoić; może nie F# ale taki #haskell wydaje się być takim C++ ze świata programowania funkcyjnego: najbardziej ogólny język, rozwijany od lat, itd. No i teraz pytanie: czy to wszystko co robię, muszę i chcę robić w C++ mogę z podobną łatwością robić w świecie programowania funkcyjnego? Tzn. informacji o tym DLACZEGO tego typu model programowania powstał nie jestem w stanie znaleźć... czytam o różnicach ale... prościej: namówcie mnie na programowanie funkcyjne. ;-)
@smsrampage: zawsze jak ktoś zadaje pytania mające wykazać wyższość jednego rozwiązania nad drugim to zaczyna się gównoburza :) Także ja poobserwuje ,bo do powiedzenia nie mam nic więcej :D
w funkcyjnym raczej pracy nie znajdziesz, ale niewątpliwie ma ono swoje zalety - jak choćby z definicji bezpieczne w środowiskach wielowątkowych. Poza tym uczy nieco innego myślenia, innego podejścia do modelowania świata. Moim zdaniem jest bardziej wymagające od OO, ale efekty potrafią być czasem zaskakujące.
w funkcyjnym, jeśli ogarniesz i przyswoisz sobie inny sposób myślenia - tak, zrobisz wszystko co w c++, nawet łatwiej i szybciej (w niektórych problemach).
@badasq: chodzi właśnie o to, że mam przyzwolenie na wybór własnych rozwiązań byleby efekty były zadowalające. To, że pisze się inaczej i myśli inaczej jest tym co mnie do programowania funkcyjnego przyciąga ALE pytanie jest takie czy możliwości są podobne? Czy dam radę robić w takim Haskellu to samo co robię teraz w C++ z Qt albo Delphi?
There is a large number of GUI libraries for Haskell. Unfortunately there is no standard one and all are more or less incomplete. In general, low-level veneers are going well, but they are low level. High-level abstractions are pretty experimental. There is a need for a supported medium-level GUI library.
No i taki brak wsparcia mnie właśnie odrzuca. ;c Edit: jak jest z innymi językami funkcyjnymi?
@smsrampage: Dobry programista się nie ogranicza i zna zarówno OOP, jak i programowanie funkcyjne. Wszystko zależy od przeznaczenia oprogramowania, np. programowanie funkcyjne idealnie się sprawdza w pisaniu kompilatorów.
No bo jedni mogą pisać, że programowanie funkcyjne to dobre tylko dla jajogłowych na uniwersytetach a nie w prawdziwym świecie. Na to ktoś rzuci przykład z przepisywaniem twittera na scalę. Ktoś mądry uściśli, że to nie cały twitter, a scala to takie pomieszanie imperatywnego z oopem z funkcyjnym. Ktoś inny zawoła że erlang przecież, prawdziwe projekty - jabbered i połowa telekomunikacji. Inny mu napiszę, że niszowo to i w COBOLu
@aseeon: @tomekswk: te zastosowania nie są dla mnie. Szkoda. Chciałem robić to co robię w innym stylu, a nie dopasowywać to co robię do tego co chcę umieć. Wiem, że to tak jakbym marudził, że muszę wkręcać śruby wkrętakiem, a nie młotkiem ale widziałem oczyma wyobraźni zalety tego młotka i chciałem się nim pobawić... bo nie patrzę na języki programowania jak na narzędzia - gdybym tak to widział to olałbym
@smsrampage: No to nie ma cię co przekonywać. Osobiście jednak uważam, że język programowania to też po prostu narzędzie do celu i jak robisz coś w czym c# jest wyspecjalizowany, robi to najlepiej, a ty możesz go użyć, to trzeba go użyć.
Wyjątkiem jest edukacja jako cel, ale to kiedyś i tak się kończy ( ͡°͜ʖ͡°)
Uczyłem się programowania z Pythonem i C#. Poszedłem do pracy gdzie wybrałem sobie C++ (jako wyzwanie: terminy oddawania projektów motywują do nauki :P). Język taki czy siaki: zawsze wszystko wyglądało tak samo - mam jakiegoś kreatora GUI, układam sobie puzzle, łączę z bazą, oprogramowuję funkcje i aplikacja okienkowa gotowa. ;-) Moje marzenie napisania gry także jest do spełnienia z C++ więc szafa gra, mam swój język i jest dobrze... ale zawsze fascynowało mnie programowanie funkcyjne. Kiedy zaczynałem się uczyć C#, zobaczyłem coś takiego jak F# - nie wiedziałem wtedy o co chodzi, a samouczek mnie przeraził ale fascynacja gdzieś tam na dnie mojej duszy się zakleszczyła... i jest tam do dzisiaj z tym, że teraz wydaje mi się, że byłbym w stanie taki samouczek przyswoić; może nie F# ale taki #haskell wydaje się być takim C++ ze świata programowania funkcyjnego: najbardziej ogólny język, rozwijany od lat, itd. No i teraz pytanie: czy to wszystko co robię, muszę i chcę robić w C++ mogę z podobną łatwością robić w świecie programowania funkcyjnego? Tzn. informacji o tym DLACZEGO tego typu model programowania powstał nie jestem w stanie znaleźć... czytam o różnicach ale... prościej: namówcie mnie na programowanie funkcyjne. ;-)
w funkcyjnym raczej pracy nie znajdziesz, ale niewątpliwie ma ono swoje zalety - jak choćby z definicji bezpieczne w środowiskach wielowątkowych. Poza tym uczy nieco innego myślenia, innego podejścia do modelowania świata. Moim zdaniem jest bardziej wymagające od OO, ale efekty potrafią być czasem zaskakujące.
w funkcyjnym, jeśli ogarniesz i przyswoisz sobie inny sposób myślenia - tak, zrobisz wszystko co w c++, nawet łatwiej i szybciej (w niektórych problemach).
No i taki brak wsparcia mnie właśnie odrzuca. ;c Edit: jak jest z innymi językami funkcyjnymi?
No bo jedni mogą pisać, że programowanie funkcyjne to dobre tylko dla jajogłowych na uniwersytetach a nie w prawdziwym świecie. Na to ktoś rzuci przykład z przepisywaniem twittera na scalę. Ktoś mądry uściśli, że to nie cały twitter, a scala to takie pomieszanie imperatywnego z oopem z funkcyjnym. Ktoś inny zawoła że erlang przecież, prawdziwe projekty - jabbered i połowa telekomunikacji. Inny mu napiszę, że niszowo to i w COBOLu
Wyjątkiem jest edukacja jako cel, ale to kiedyś i tak się kończy ( ͡° ͜ʖ ͡°)