Dlaczego R?

0

Co to jest ten R ?! Ja słyszałem że po prostu obliczenia w konsoli (ale kusząca jest propozycja programowania superkomputerów :) ).
Czy można w tym robić aplikacje okienkowe ? Czy to wszystko dlatego że 4programmers.net ?
No bo ja o R za bardzo nie słyszałem... O co wam chdzi ?!

PS: Coś już szukałem...

0

http://lmgtfy.com/?q=r+language

edit:

PS: Coś już szukałem...

Dam ci protip. Zamiast rozważać w nieskończoność języki programowania, lepiej wziąć się za praktykę i naprawdę pisać. Choćby w jednym języku, choćby w słabym.

Oczywiście, językami można się interesować rownież teoretycznie, ale już na temat różnych języków programowania jest tyle materiałów w necie, że nie trzeba zakładać aż nowego wątku...

0
Xix napisał(a):

4programmers.net ?

Niestety ale tym się ujawniłeś a tak przyjemnie się czytało.

8

Zanim ktoś znowu zaproponuje, aby @Xix zbanować, chciałem tylko zaznaczyć, że razem z nim należy zbanować wszystkich, którzy go w temacie R trollowali. Mam na liście już chyba ze 12 osób.

0

Poczytaj posty świętej pamięci @Laflx

0

No to do czego ten R ?

5

R jako język to jest po prostu kolejny język do analizy, który powstał jako implementacja języka S. Jego cechą charakterystyczną jest bardzo fajna składnia do rozwiązywania problemów statystycznych i do tego jest przede wszystkim stosowany. Ma też moduł do rysowania wykresów, które nadają się do publikacji naukowych (odpowiednia jakość finalnego wydruku).

0

Może zrobimy język 4P ?
Wyglądałby tak:

Xix.try {Laflx.copy("x.txt","z"); } niezdecydowany.catch Laflx.IOExc e1 { Xix.SchowError("Can not read File");
Będzie na platformę .NET

0

A ja dalej nie wiem czemu akurat R do trollowania :D

0

Do celów naukowych, mimo wszystko bardzo dobrym językiem programowania jest python, w którym to oczywiście można zrobić znacznie więcej niż tylko obliczenia, więc nie wiem dlaczego co niektórzy zachłystują się jakimiś mało popularnymi językami programowania o dość wąskim zastosowaniu.

@Xix Jakbyś nie wiedział, to jest jeszcze taki język jak Julia, choć bez raczej do celów naukowych idealnie nadaje się też Matlab. Oprogramowanie które można wykorzystać to oczywiście znany ze studiów Matlab, jak również odpowiedniki takie jak GNU Octave, FreeMat czy nawet SciLab (trochę się różni). GNU Octave jest nawet online więc nie trzeba instalować.

W pythonie można od groma zrobić bo ma takie fajne biblioteki jak NumPy, do wykresów jest Matplotlib. Nie widzę nawet sensu uczyć się R czy Julia i tym samym zaśmiecać sobie głowy bo nie widzę tu żadnych większych korzyści, do celów jakichś tam analiz wystarczy Matlab albo Python.

4

Coraz mnie rozumiem dzisiejszy świat. Żeby ludzie toczyli wojny o język programowania?

R jest językiem specjalistycznym, umocowanym w ogliczeniach statystycznych. Do Pythona nie za bardzo da się go porównać z uwagi na zbyt ubogą bibliotekę Pythona, tak obliczeniową jak i graficzną. Jest tam kilkadziesiąt tysięcy metod obliczeniowych i kilka tysięcy bibliotek, a także kilka osobnych podsystemów graficznych. W dodatku jest w pełni przenośny na różne platformy, w tym ARM. Można go porównać bardziej do SAS albo SPSS. No może z tą różnicą, że podstawowy moduł SAS o o wiele mniejszych możliwościach kosztuje krocie.

Co można w nim zrobić? Dużo rzeczy, w tym aplikacje analityczne, tak okienkowe w oparciu o GTK, Tcl/TK jak interaktywne strony WWW w oparciu o odpowiednie silniki i JS, np. Shiny. Można nawet tworzyć webserwisy REST. Ale ostatecznie R nie powstał do wszystkiego, tak, jak nie do wszystkiego powstał np. Visual Basic czy nawet Java. W przypadku R jest to zdecydowanie bardziej wyraźne.

Kilka pierwszych zastosowań R jakie mi się nasuwają: big data (hadoop, klastry obliczeniowe), ekonometria, finanse, socjologia, medycyna. Najwięcej chyba medycyna. Licytowanie się na wysokości zarobków też nie ma tu sensu. Programista R poza specyficznym rynkiem praktycznie nie znajdzie zatrudnienia, no bo po co w przeciętnej firmie R? Ale z kolei wewnątrz tego specyficznego rynku, jak np. badania kliniczne, skoring kredytowy, modelowanie finansowe, data mining, zarobki plasują się mniej więcej w zakresie 6-20 tys. brutto. Zapewne dlatego, że programistów R jest mało, a programiści innych języków, by osiągnąć podobny efekt, spędzą o wiele więcej czasu. Chociaż warto wspomnieć, że programiści R znajdują zatrudnienie np. w Facebooku, Google, bankach i i innych firmach, gdzie jest on wykorzystywany; są w sieci listy firm, które go wykorzystują.

W sumie idealnym tandemem jest R + Python, jako że potrafią ze sobą bezproblemowo "gadać". Chociaż w sumie R potrafi "gadać" z każdym nowoczesnym językiem programowania, od C przez Javę, C#, PHP, po Perl i Pythona. RJava, Rpy, R.NET, Rcpp, OpenCPU to tylko kilka przykładów. Do tego ma spore wsparcie Oracle'a, Revolution Analytics no i od niedawna - Microsoftu, który poszedł drogą Oracle'a i włączył R do SQL Servera.

Nie róbmy z języków programowania religii, tylko traktujmy je jak narzędzia. Assembler ma swoje zastosowania. PHP jest fajny do szybkiego tworzenia serwisów www. Java i C# są super do tworzenia aplikacji tzw. biznesowych. C i jego odmiany są świetne do programowania niskopoziomowego, wydajnego, w tym urządzeń. Perl jest super do przetwarzania tekstów. Python jest świetnym językiem skryptowym do szybkiego tworzenia różnych aplikacji. A R, podobnie jak np. Ovtave, jest dobrym językiem do analizy danych.

0

Zamiast R polecam Rust też jest na literkę R i w dodatku kompilowany jak Vala, D. Poza tym Scala, Ceylon, Kotlin, Groovy są nowocześniejsze.

3

Niestety chyba R zginie na horyzoncie zdarzeń (nie dotrze do szczytowego punktu).
W okół jest tyle języków, że te z za krótką nazwą się nie przyjmują ;-)

O R wspominamy tak często, ponieważ trol który go promował był bardzo konsekwentny w tym co robił.

Jego konkurencja:

W zakresie analizy danych:

  • Python
  • Julia
  • pierdylion narzędzi do Big Data

W zakresie analizy matematycznej to jest tego tyle, że trudno się w tym połapać:

  • Octave
  • SciPy
  • Maxima
  • lub po prostu Wolfram Alpha
0

@Make Code Not War
Polski język programowania to nie Kotlin, pomyliłeś z Ketchupem. Wykopowcy znaleźli Ć - Polski język programowania
http://www.wykop.pl/link/907773/nowy-jezyk-programowania-c-polski-projekt/
Były jeszcze język ZDZICH , Rej.

0

Kurczę, chyba wymyślę sobie język, będzie się nazywał Þ (rozszerzenie pliku: ) i będzie do wszystkiego (czyli do niczego).

0

A na w PacktPubie Deal of a Day poświęcony właśnie R.

Generalnie przeglądając newslettery z ostatnich kilku tygodni dużo tego R.

5

Tak naprawdę nie bardzo rozumiem sens istnienia tego tematu. R nie jest typowym językiem ogólnego przeznaczenia. Specjalizuję się w nim od ponad 10 lat, ale w życiu by mi do głowy nie przyszło coś takiego. R fajnie sprawdza się jako engine obliczeniowy - w moim przypadku w tandemie z C# - ale sprawdzi się w sumie w każdej kombinacji. To tak, jak by założyć temat "Dlaczego SAS" czy "dlaczego SPSS" w kontekście języków ogólnego przeznaczenia. To, że można w R napisać kompletną aplikację webową (HTML, JS, R), dzięki której można np. "wystawić" raporty po sieci, albo że można budować w nim aplikacje okienkowe nie oznacza, że służy (powstał) on głównie do tego. Ba! Nawet biblioteki do R tworzy się (poza R) głównie w Fortanie i C++.

Jeśli jednak jest ktoś zainteresowany pobieżnym przeglądem możliwości narzędzia, zapraszam do tej prezentacji: http://www.r-clinical-research.com . Nie jest to tutorial języka - tych jest w sieci masa. Co prawda skierowany jest głównie do osób z branży badań klinicznych, ale myślę, że zawiera nieco przydatnych informacji.

5
Make Code Not War napisał(a):

Tak naprawdę nie bardzo rozumiem sens istnienia tego tematu. R nie jest typowym językiem ogólnego przeznaczenia.

Problem w tym, że jest cała masa "programistów", którzy nie rozumieją tego zwrotu. Dla nich język ma być do wszystkiego, ze wszystkim kompatybilny i uruchamiać się wszędzie. Dla nich R jest do d**y, bo nie pisze się w nim formatek do uruchamianych na pralce mobilnych systemów ERP. Ten sam rodzaj niezrozumienia reprezentował @Laflx, który uparcie twierdził, że R już niedługo zastąpi wszystkie języki świata, bo jedną linijką można w nim obliczyć układ własny macierzy. Przez niego język ten stał się tutaj kultowy, ale w dość negatywnym sensie.

Make Code Not War napisał(a):

Programista R poza specyficznym rynkiem praktycznie nie znajdzie zatrudnienia, no bo po co w przeciętnej firmie R?

W mojej niedawnej jeszcze pracy, programiści R robili statystyki podziału stanowisk wg płci i wieku, tematów maili słanych na all oraz rysowali diagramy hierarchii firmowej. To wbrew pozorom niełatwe zadanie, wcale bym się nie zdziwił, gdyby były w niej cykle. ;)

1

Tylko że do takich wniosków że R nadaje się świetnie do specyficznych zastosowań (jak sądzę wąska nisza rynkowa) to można dojść jak się siedzi w IT już dość długo i przerabiało się różne języki programowania (od statycznie typowanych po te typowane dynamicznie) a nie jak ktoś robi coś dla przykładu tylko w javie i jest tym tak zafascynowany że świata poza tym nie widzi.

I cóż z tego że JAVA może być do wielu zastosowań, od aplikacji konsolowych, desktopowych, mobilnych, po webowe skoro jak się można zorientować, w wielu zastosowaniach o wiele lepiej sprawdzają się języki skryptowe? I tak np. PHP nadaje się świetnie do webu, wybiera się go do realizacji wielu serwisów, natomiast jakoś nie spotkałem się chociażby z aplikacją desktopową w tym języku (przynajmniej z tych gdzie kod źródłowy jest dostępny).

To by można analizować w ten sposób: jak dużo pracy potrzeba do realizacji tego samego zadania ze statystyki mając do wyboru: C++, C#, JAVA, PHP, python, R i jakie koszty poniesie później klient (który zresztą nie musi się na tym znać)?

4

Odnośnie Twojego końcowego pytania - to znów zależy od potrzeb. Powiedzmy, że "statystyka" to "słupki i średnie". Wtedy wystarczy Excel, ewentualnie z małym wsparciem VBA. Ba, nawet zwykły SQL zwróci nam komplet statystyk takich jak: średnia, błąd standardowy, wariancja, współczynnik zmienności itd. A bez problemu można w nim zaimplementować tablice kwantyli rozkładu (albo je nawet wyliczać jak ktoś lubi) i obliczyć przedział ufności. Jeśli chodzi o modelowanie liniowe i nieliniowe, wystarczy każdy jeden język programowania z odpowiednią biblioteką, o pakietach matematycznych nie wspominając. Jeśli chodzi o wykresy - bibliotek są tony, np. dla C# - OxyPlot (z taką liczbą generowanych wykresów, że głowa boli).

ALE! Zabawa zaczyna się, gdy trzeba policzyć coś niestandardowego. Modeli statystycznych są setki, podobnie mamy setki testów statystycznych - i to nie jest tak, że tych "rzadko używanych nikt nie używa". Używa, a wtedy jest problem ze znalezieniem ich implementacji. Gotowej, przetestowanej i spełniającej pewne kryteria. Owszem, używa, w specjalistycznych zastosowaniach. "Głupie" modele liniowe mogą być mocno skomplikowane: efekty losowe (modele mieszane), hierarchie, specyficzne funkcje łączące. Dalej - mogą być problemy z założeniami metod statystycznych i wtedy wybiera się tzw. "odporne" metody, które są implementowane o wiele rzadziej. Tam sprawdzi się już porządny pakiet statystyczny (nie mówię, że akurat R, bo jest ich kilka). Podobnie z wykresami - biblioteka ggplot2 potrafi "otworzyć usta". Zwłaszcza w połączeniu z JavaScript.

Natomiast mamy też specyficzne rozwiązania, np. programy transformujące dane, wykonujące na nich pewne automatyczne analizy, gromadzące i przetwarzające dane, posiadające prosty interfejs graficzny i pracujące na minikomputerkach jak np. Raspberry PI. Robiłem taki system w oparciu o RPi, R, Tcl/Tk, konektory do bazy danych i spory, dotykowy wyświetlacz LCD. Chodziło sobie takie małe coś w pudełeczku, gromadziło dane z aparatury pomiarowej i wystawiało w intranecie wyniki z wykresami.

Potęga R tak naprawdę polega na jego bibliotekach, ale nie tylko w sferze metod statystycznych, ale także operowania na danych. Faktycznie, w kilku linijkach można zagregować dane z plików, ODBC, JDBC, natywnych konektorów, webserwisów (JSON, XML), a potem jednym poleceniem zapisać je np. do kochanego w biurach Accessa. Biblioteki takie jak ddplyr czy sqldf (użycie SQLa do odpytywania wewnętrznych struktur danych R) znacznie ułatwiają takie operacje. Podobny "power" ma np. LINQ w .NETcie (i chyba też coś podobnego w Javie). Podsumowując ten TL;DR :) to zależy co chcemy zrobić. W tej prezentacji co podałem widać wyraźnie tercet: SAS, R, Python (a w ich obrębie z kolei codziennością jest SQL). Inaczej może się okazać, że do wróbla użyje się armaty (R), nawet BARDZO drogiej (SAS), podczas, gdy wystarczyłby prosty programik w C.

0

No no, jednak Microsoft nie sciemnial http://blog.sqlgeek.pl/2015/11/25/sql-server-2016-r-i-segmentacja-klientw/ i http://blog.revolutionanalytics.com/2015/11/powerbi-adds-support-for-r.html
Tylko n ie wiem czy sie z tego cieszyc czy nie, bo wiadome jest, ze jak Microsoft polozy na czyms lape, to to przestaje dzialac tak dobrze jak wczesniej, np. Skype. Pewnie teraz wypuszcza R#, ktory nie bedzie mial wiele wspolnego z R, podobnie jak kiedys Java# czy JavaScript#...

0

Gdyby ktoś miał jeszcze wątpliwości czy R zawładnie rynkiem programowania, dostępna jest dzisiaj książka za darmo:

"Data Manipulation with R" - https://www.packtpub.com/packt/offers/free-learning

0
Make Code Not War napisał(a):

Co można w nim zrobić? Dużo rzeczy, w tym aplikacje analityczne, tak okienkowe w oparciu o GTK, Tcl/TK jak interaktywne strony WWW w oparciu o odpowiednie silniki i JS, np. Shiny. Można nawet tworzyć webserwisy REST.

A znasz jakąś firmę albo choć programersa który komercyjnie a nie dla hobby pisze jakikolwiek soft w R? Bo ja też wiem, że można pisać aplikacje okienkowe w assemblerze, tylko kto normalny to robi? Po co webservice pisać w R jak masz jave albo asp albo imo najlepszy wybór php? Ludzie dostali obsesji na punkcie R bo taka moda, a prawda jest taka że każdy inny język można użyć do tego samego celu.

1

A znasz jakąś firmę albo choć programersa który komercyjnie a nie dla hobby pisze jakikolwiek soft w R?

No znam kilka takich projektów. Przewijają się w niektórych bankach.

2
Automatyczny nick napisał(a):
Make Code Not War napisał(a):

Co można w nim zrobić? Dużo rzeczy, w tym aplikacje analityczne, tak okienkowe w oparciu o GTK, Tcl/TK jak interaktywne strony WWW w oparciu o odpowiednie silniki i JS, np. Shiny. Można nawet tworzyć webserwisy REST.

A znasz jakąś firmę albo choć programersa który komercyjnie a nie dla hobby pisze jakikolwiek soft w R? Bo ja też wiem, że można pisać aplikacje okienkowe w assemblerze, tylko kto normalny to robi? Po co webservice pisać w R jak masz jave albo asp albo imo najlepszy wybór php? Ludzie dostali obsesji na punkcie R bo taka moda, a prawda jest taka że każdy inny język można użyć do tego samego celu.

Swego czasu miałem wątpliwą przyjemność walczenia z SAP HANA, która właśnie do przetwarzania danych używała R. Co do pytania o webserwisy to nie spotkałem się z niczym takowym, raz tylko było na horyzoncie pisanie czegoś z użyciem Shiny, ale ten "framework" ma jedno zastosowanie - możliwość tworzenia dynamicznych raportów. To jest miejsce gdzie R lśni - raporty z odpowiednią ilością statystyki. Sam na studiach pisałem raporty z fizyki właśnie w R, bo było to kretyńsko proste i mogłem szybko wprowadzać zmiany. Nie było to, powiedzmy sobie szczerze, zastosowanie biznesowe, ale było to najłatwiejsze rozwiązanie z obecnych. Żaden inny język programowania nie umożliwiał tego w tak bezbolesny sposób.

PS twierdzenie "najlepszy wybór php" jest prawdziwe tylko w przypadku gdy mówimy językach, które mamy nadzieję, że w niedalekiej przyszłości wymrą.

3
Automatyczny nick napisał(a):
Make Code Not War napisał(a):

Co można w nim zrobić? Dużo rzeczy, w tym aplikacje analityczne, tak okienkowe w oparciu o GTK, Tcl/TK jak interaktywne strony WWW w oparciu o odpowiednie silniki i JS, np. Shiny. Można nawet tworzyć webserwisy REST.

A znasz jakąś firmę albo choć programersa który komercyjnie a nie dla hobby pisze jakikolwiek soft w R? Bo ja też wiem, że można pisać aplikacje okienkowe w assemblerze, tylko kto normalny to robi? Po co webservice pisać w R jak masz jave albo asp albo imo najlepszy wybór php? Ludzie dostali obsesji na punkcie R bo taka moda, a prawda jest taka że każdy inny język można użyć do tego samego celu.

A i owszem. Kilka z branży farmaceutycznej, gdzie R stanowi alternatywę/wsparcie dla SAS. Pisałem dla takich firm serwisy do generowania raportów i zarządzania informacjami związanymi z badaniami klinicznymi.

A teraz - dlaczego?

  1. bo na miejscu byli już biostatystycy znający SAS i R. Po co zatrudniać dodatkowo programistę np. PHP, skoro już są na pokładzie ludzie, którzy to ogarną?
  2. bo uniknąłem w ten sposób narzutów zwiazanych z kolejnymi warstwami .NET<-> R, PHP <-> R itd. Mniej warstw, mniej dodatkowego softu, to "lżejsza" aplikacja, "czystszy" serwer, mniej problemów. Zjadłem zęby na współpracy .NET i R i chociaż wielokrotnie dało mi to zarobić na chleb i jestem pełen wdzięczności dla twórców konektorów, to wolę unikać pośredników
  3. bo R pozwalał mi zrealizować wszystko to, czego potrzebowałem - połączenia do praktycznie dowolnej bazy danych, generowanie skomplikowanych tabel (bardzo ważne w farmacji), generowanie dokumentów Worda, Excela, PDF i Latexa, rewelacyjny moduł do wykresów (ggplot2) i masę gotowych bibliotek do współpracy z SAS i specjalistycznym oprogramowaniem z tej branży. Pozwalał mi także na dostanie się do lokalnego Active Directory i załatwił sprawę uwierzytelniania użytkowników. A do tego miałem pod ręką wygodny język do przetwarzania (transformowania) danych.
  4. bo instalacja, konfiguracja i zarządzanie tym było proste do ogarnięcia przez administratorów z lokalnego działu IT
  5. bo do generowania raportów, przeglądów, podsumowań i zarządania nimi nie potrzeba od razu ciężkich dział. To nie miał być drugi Facebook, a intranetowa (VPN) aplikacja dla góra 100 użytkowników.

Co do **Shiny **- fajna sprawa, ALE w darmowej wersji nie pozwala na równoległą pracę użytkowników. Wszyscy widzą te same zmienne, wszystko dzieje się w jednym procesie, wszyscy dzielą tę samą pamieć i pakiety, więc jak coś się powiesi albo wysypie - to leży wszystko. Darmowe Shiny jest fajne do testów, ale nie do poważnej pracy. Gdybym miał wskazać analogię np. do .NETa to coś jak mikro serwerek Cassini i np. IIS albo Apache. Dopiero w płatnej wersji mamy wparcie dla równoległej pracy użytkowników. Do tego Shiny nie jest zbyt elastyczne. Fakt, aplikacje tworzy się szybko, wyglądają fajnie i wszystko jest cacy o ile korzystamy z tego, co nam przygotowano. Jeśli chcę czegoś więcej niż "sparametryzowane raporty" i mam własną koncepcję, to może być problem.

Z tego powodu wybrałem OpenCPU. Jest bardziej niskopoziomowe, wystawia funkcje z bibliotek R jako metody serwisu po HTTP, przez co idealnie nadaje się do tworzenia aplikacji z cienkim klientem, np. przeglądarkowych. Jedyny problem to że trzeba mieć pewne doświadczenie i poradzić sobie tym, że na serwerze nie jest trzymany stan sesji. Klienta tworzymy w czym chcemy:

  • w HTML + JavaScript (AJAX), z dodatkiem np. jQuery i biblioteki w rodzaju Bootstrapa. Pomijając tu dylematy w rodzaju "kocham / nienawidzę" - zyskujemy niewielkim kosztem responsywność strony (tablety itd) i lekki, przyjemny wygląd. Jak ktoś ma zacięcie do webmasteringu (co zdarza się raczej rzadko w firmach farmaceutycznych :) ), to może się tu wykazać do woli
  • możemy napisać okienkowego klienta, który będzie nam wywoływał usługi po HTTP. Możemy tu użyć dowolnego języka - MFC, .NET, Javę, GTK, QT, Tcl/tk czy co tam jeszcze.
  • jako klienta możemy użyć też Excela i zintegrować się z istniejącymi raportami. Możemy odpytywać nasz serwis z poziomu innego webserwisu. Możemy wreszcie użyć choćby plików wsadowych (odpalanych z CRONa), w których odpytamy serwis curlem, załadujemy na serwer dane i odbirzemy raporty w Excelu czy PDFie i wyślemy zainteresowanym mailem.

To wszystko oczywiście dotyczy serwisów napisanych w dowolnej technologii, i tą technologią może być także R. Tym bardziej w środowisku, które wykorzystuje intensywnie ten język do bieżących analiz (bankowość, medycyna, transport, itd.)

Minusy? Jak odejdą z firmy goście, którzy znają R, to nikt nie pociągnie dalej tego serwisu :) Ale akurat w firmach z mojej branży jest to marginalny problem.

Oczywiście trzeba sobie zadać pytanie, czy nasz konkretny system analityczno-raportujący naprawdę potrzebuje R? Przecież często chodzi tylko o odpalenie kwerendy SQL i wyświetlenie wyników w tabelce. Teoretycznie wystarczyłby... sam serwer bazy danych z opcją wystawienia kwerend po webserwisie :) Ale jeśli nasz system wymaga modelowania statystycznego, złożonych transformacji danych, specjalistycznych wykresów (np. w farmacji), a w dodatku mamy na pokładzie eRowych analityków, warto się temu przyjrzeć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1